𝗝𝗮𝘃𝗮𝗦𝗰𝗿𝗶𝗽𝘁 𝗣𝗿𝗼𝗺𝗶𝘀𝗲𝘀

Promise คือสิ่งที่แสดงถึงผลลัพธ์ของงานแบบ asynchronous

คุณใช้ Promise สำหรับการเรียก API, การคิวรีฐานข้อมูล (database queries) และการอ่านไฟล์

Promise มี 3 สถานะ:

  • Pending: งานกำลังดำเนินการอยู่
  • Fulfilled: งานเสร็จสิ้นอย่างสำเร็จ
  • Rejected: งานล้มเหลวเนื่องจากเกิดข้อผิดพลาด

โครงสร้างมีลักษณะดังนี้:

const promise = new Promise((resolve, reject) => { // The executor runs immediately });

คุณจัดการกับผลลัพธ์ด้วย method เหล่านี้:

  • .then(): ทำงานเมื่อ promise สำเร็จ
  • .catch(): ทำงานเมื่อ promise ล้มเหลว
  • .finally(): ทำงานเมื่อจบงาน ไม่ว่าผลลัพธ์จะเป็นอย่างไรก็ตาม

กฎสำคัญที่ควรจำ:

  • ผลลัพธ์แรกจะเป็นผู้ชนะ หากคุณเรียก resolve() แล้วตามด้วย reject() ตัว resolve จะเป็นผู้ชนะ
  • ฟังก์ชัน executor จะทำงานแบบ synchronous
  • การใช้ async และ await ช่วยให้โค้ดของคุณอ่านง่ายกว่าการใช้ .then()

การจัดการกับหลาย promise:

  • Promise.all(): ใช้แนวทางแบบ fail-fast หากมี promise ใดตัวหนึ่งล้มเหลว ทั้งกลุ่มจะล้มเหลวทันที
  • Promise.allSettled(): จะรอให้ทุก promise ทำงานจนเสร็จสิ้น โดยจะคืนค่าผลลัพธ์กลับมาแม้ว่าบางงานจะล้มเหลวก็ตาม

สรุป:

  • Promise: ตัวจัดการผลลัพธ์แบบ asynchronous
  • resolve: ระบุว่าสำเร็จ
  • reject: ระบุว่าล้มเหลว
  • async/await: วิธีการเขียน promise ที่สะอาดตาและอ่านง่ายกว่า
  • Promise.all: หยุดทำงานทันทีเมื่อเจอข้อผิดพลาดแรก
  • Promise.allSettled: ทำงานจนครบทุกงาน

Source: https://dev.to/malik786/javascript-promises-2hn4