JavaScript Academy · บทเรียน

Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม

ฝึกใช้ตัวรวม Promise: all, any, race, allSettled เรียนรู้พฤติกรรมเมื่อสำเร็จหรือล้มเหลว และเวลาที่ควรใช้แต่ละแบบ

บทเรียน 3 จาก 38 ขั้นตอน

Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม เป็นบทเรียน JavaScript Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน JavaScript Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน

ภาพรวมตัวช่วยประสานพรอมิส

เป้าหมาย: เรียนรู้ตัวช่วยสี่แบบและพฤติกรรมของแต่ละแบบ

  • all: รอทั้งหมด และล้มเหลวทันที
  • any: สำเร็จครั้งแรก
  • race: รายการแรกที่เสร็จสิ้น ไม่ว่าจะสำเร็จหรือล้มเหลว
  • allSettled: ผลลัพธ์ของทุกรายการ
Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 1

พื้นฐาน Promise.all

Promise.all จะสำเร็จพร้อมอาร์เรย์ของผลลัพธ์ การปฏิเสธเพียงรายการเดียวจะทำให้ทั้งหมดถูกปฏิเสธ

// Small helpers for examples
function delay(ms, value, shouldFail = false) {
  return new Promise(function (resolve, reject) {
    setTimeout(function () {
      if (shouldFail) reject(new Error(String(value)));
      else resolve(value);
    }, ms);
  });
}

// Promise.all waits for all; rejects fast on first error
Promise.all([
  delay(10, "A"),
  delay(5, "B")
]).then(function (vals) {
  console.log("all:", vals);
});
Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 2

พื้นฐาน Promise.any

Promise.any จะสำเร็จด้วยผลสำเร็จแรก และจะถูกปฏิเสธก็ต่อเมื่อข้อมูลเข้าทั้งหมดถูกปฏิเสธ

// Promise.any gives the first fulfilled value
Promise.any([
  delay(8, "ok-1"),
  delay(3, "ok-2"),
  delay(6, "ok-3")
]).then(function (v) {
  console.log("any:", v);
}).catch(function (e) {
  console.log("any failed:", e.message);
});
Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 3

พื้นฐาน Promise.race

Promise.race จะเลือกสิ่งที่เสร็จสิ้นก่อน ซึ่งอาจเป็นการสำเร็จหรือการปฏิเสธก็ได้

// Promise.race settles with the first to finish (success or error)
Promise.race([
  delay(5, "win"),
  delay(7, "boom", true)
]).then(function (v) {
  console.log("race resolved:", v);
}).catch(function (e) {
  console.log("race rejected:", e.message);
});
Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 4

พื้นฐาน Promise.allSettled

Promise.allSettled จะสำเร็จเสมอพร้อมอาร์เรย์ของวัตถุสถานะสำหรับข้อมูลเข้าทุกรายการ

// Promise.allSettled waits for all and reports each outcome
Promise.allSettled([
  delay(4, "A"),
  delay(6, "X", true)
]).then(function (results) {
  console.log("allSettled:", results.map(function (r) { return r.status; }));
});
Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 5

ควรใช้แบบใด

การเลือกใช้:

  • all: ต้องการผลลัพธ์ทั้งหมด และต้องการให้ล้มเหลวทันทีเมื่อเกิดข้อผิดพลาดใด ๆ
  • any: ยอมรับผลสำเร็จแรก เช่น แหล่งข้อมูลทดแทน
  • race: เลือกสิ่งที่เสร็จสิ้นก่อน เช่น รูปแบบการกำหนดเวลาหมด
  • allSettled: รวบรวมผลลัพธ์ทุกกรณีเพื่อตรวจสอบ
Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 6

แบบทดสอบการเลือกตัวช่วยประสานพรอมิส

ตรวจสอบอย่างรวดเร็ว: ผลลัพธ์ที่สำเร็จเป็นรายการแรก

Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 7

ทบทวน

ทบทวน: ใช้ all เมื่อ “ต้องการทั้งหมด” ใช้ any เมื่อ “ต้องการผลสำเร็จแรก” ใช้ race เมื่อ “ต้องการรายการแรกที่เสร็จสิ้น” และใช้ allSettled เพื่อตรวจสอบผลลัพธ์ทุกกรณีโดยไม่หยุดการทำงานก่อน

Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม — ภาพประกอบ 8
เริ่มต้นได้ฟรี

เรียนรู้ JavaScript ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
59
บทเรียน
200

คำถามที่พบบ่อย

บทเรียน “Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส JavaScript Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส JavaScript Academy มีบทเรียนทั้งหมด 3 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม”

ฝึกใช้ตัวรวม Promise: all, any, race, allSettled เรียนรู้พฤติกรรมเมื่อสำเร็จหรือล้มเหลว และเวลาที่ควรใช้แต่ละแบบ คุณปฏิบัติ JavaScript Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน JavaScript Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน JavaScript Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 3 บทเรียน

บทเรียน “Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน JavaScript Academy นี้ได้ไหม

ได้ บทเรียน JavaScript Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. Event Loop และพื้นฐาน Task กับ Microtask
  2. Promises — สถานะ การเชื่อมต่อ และการจัดการข้อผิดพลาด
  3. Promise.all / any / race / allSettled — เลือกเครื่องมือให้เหมาะสม
← กลับไปที่ JavaScript Academy