nodejs async/await คืออะไร?


นี่เป็นอีกรูปแบบหนึ่งของการเรียกใช้ฟังก์ชันแบบ Promise คือการใช้ async await จาก
ตัวอย่างโค้ดด้านล่างจะเห็นว่าโค้ดสวยขึ้น อ่านง่ายขึ้นไปอีก  วิธีใช้งานคือให้ประกาศคำว่า async หน้า
ฟังก์ชันที่ต้องการใช้งาน await  จากนั้นเวลาเราเขียนโค้ดไปว่า await ตามด้วยชื่อฟังก์ชันจะเป็น
การกำหนดให้ฟังก์ชันนั้นทำงานให้เสร็จก่อนแล้วค่อยทำงานฟังก์ชันถัดไป  เคล็ดลับในการเข้าใจง่ายๆ
คือ await คือให้รอแปปจนกว่าจะเสร็จแล้วค่อยไปต่อ

   
const triple= (num) => {
  return new Promise( (resolve, reject) => {
      if(isNaN(num)) resolve(num * 3)
      else reject("input is not a number")
  })
}

const double= (num) => {
  return new Promise( (resolve, reject) => {
      if(isNaN(num)) resolve(num * 2)
      else reject("input is not a number")
  })
}

// ตัวอย่างการใช้ async/await
async do_it() => {
   try {
      let result1 = await triple(3)
      let result2 = await double(1)
      let result3 = await double("t")
      let result4 = await triple(5)
  } catch (err) {
      console.log('Error: ', err)
  }
}
do_it()



output :>>>
result:  9
result:  2
Error:  input is not a number

จากโค้ดและผลลัพธ์ด้านบน  สมมติว่าเราจะเรียกใช้งานฟังก์ชัน triple ซึ่งใช้รับตัวเลขเข้า
มาแล้วคูณ 3  แล้วให้เรียกใช้งานฟังก์ชัน double ที่ใช้รับตัวเลขเข้ามาแล้วคูณ 2 ต่อมาให้เรียกใช้
ฟังก์ชัน double แต่ใส่ตัวอักษร t เข้าไป ( ทดสอบให้เกิด error ) ผลที่ได้คือได้ผลลัพธ์เป็น 9 กับ 2 ตาม
ลำดับและต่อมาก็แสดง error เพราะตัว t ไม่ใช่ตัวเลขจะเห็นได้ว่าเมื่อทำงานเจอ error แล้วโค้ดก็จะข้าม
การทำงานมาใน catch ทันทีเลย    การใช้งาน await แนะนำว่าให้ครอบการทำงานด้วย try catch เสมอ
ตามตัวอย่างข้างบน  เพื่อดัก error ที่อาจเกิดขึ้น

ข้อควรระวัง ประกาศ async หน้าฟังก์ชันที่ต้องการใช้งาน await ซึ่ง async/await ใช้กับ 
callback ไม่ได้ ใช้กับฟังก์ชันแบบ Promise ได้เท่านั้น  ถ้าอยากใช้ให้แปลง callback เป็น
ฟังก์ชันแบบ Promise ก่อน


ความคิดเห็น