Skip to content

Node.js | ลองใช้งาน Async/Await กับ Node 7

Node 7 ออกแล้วนะครับ ตอนนี้รองรับ Es6 features ถึง 98% แล้ว ที่นักพัฒนาดูจะให้ความสนใจกันเป็นพิเศษคือสามารถใช้งาน async/await ซึ่งเป็น synctax  ของ Es7 ได้โดยไม่ต้องติดตั้งตัว transpile อย่าง Babel เพิ่มเติม

แต่ …. ยังไม่ได้เปิดใช้งานเป็นค่า default ถ้าอยากใช้ async/await ต้องใส่ option --harmony-async-await  ตอนรัน 

การใช้งาน async ทำได้โดยการใส่ keyword  async หน้า function ที่เราต้องการ function ซึ่งจะทำให้ function นั้น return promise object สามารถใช้ then/catch แบบ promise chain ได้เลย ยกตัวอย่างเช่น

กล่าวโดยสรุป async  ทำให้ใช้งาน promise ได้ง่ายขึ้นนั่นเอง เพราะไม่ต้อง new Promise((resolve, reject) => {}) มาครอบ ได้ผลลัพธ์ก็ resolve ถ้า error ก็ reject เหมือนเดิมแล้ว

ส่วน await  ถ้าใครเคยใช้ generator มาก่อนคงจะคุ้นเคยกับ keyword yield  ซึ่งเป็นการ resolve async function จนกว่าจะได้ผลลัพธ์ จึงจะทำงานต่อซึ่งทำให้การเขียนโปรแกรมทำงานแบบ procedural เหมือนภาษาโปรแกรมทั่วไป เช่น

จากตัวอย่างโค้ดข้างบน มีข้อควรระวังการใช้งานคือ await  ต้องใช้งานกับ function ที่มี async  อยู่เท่านั้น ใช้ลอยๆ โดดๆ ไม่ได้ครับ

การใช้ async/await โดยส่วนตัวผมคิดว่าทำให้ JavaScript แบบ Es6 ไม่รกรุงรังเหมือนแต่ก่อน โค้ดสวยขึ้นเยอะเลยทีเดียว

 

Be First to Comment

Leave a Reply

Your email address will not be published.