Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

วิธีคืนค่าจาก asynchronous call ใน JavaScript

มีหลายวิธีคืนค่าจาก asynchronous call ใน JavaScript มาเข้าใจปัญหาก่อน สมมติมีฟังก์ชัน foo ที่ async และให้ข้อมูลหลังจากผ่านไปสักพัก สามารถทำได้ 2 แบบ: รับ callback ที่จะเรียกเมื่อพร้อมพร้อมข้อมูล หรือคืน Promise

เช่น setTimeout รับ callback และ execute หลังเวลาที่กำหนด

ตัวอย่าง

function myFunc(cb) {    setTimeout(() => cb(100), 1000); } myFunc((a) => console.log(a))

ผลลัพธ์

100

จะเรียก setTimeout พร้อม callback execute หลัง 1000ms เมื่อ function รัน จะเรียก callback ที่ส่งไป (cb) พร้อมค่าที่ได้จาก setTimeout's callback

ใช้ Promises

Wrap async function ด้วย promise และ resolve ด้วย return value ของฟังก์ชัน แล้ว chain then ส่ง callback ใช้ค่าที่ได้

ตัวอย่าง

new Promise(resolve => setTimeout(() => resolve(100), 1000))    .then(console.log) 

ผลลัพธ์

 100