پیشرفته
·
۱۱ دقیقه مطالعه
برنامهنویسی ناهمگام: Promise و async/await
بعضی کارها زمان میبرند (گرفتن داده از سرور). JS منتظر نمیماند؛ آنها را ناهمگام انجام میدهد.
Promise
نمایندهٔ مقداری که «در آینده» آماده میشود:
fetch("/api/data")
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
async/await — روش مدرن و خوانا
async function load() {
try {
const res = await fetch("/api/data");
const data = await res.json();
console.log(data);
} catch (err) {
console.error("خطا:", err);
}
}
awaitیعنی «صبر کن تا این Promise تمام شود».- هر تابعی با
awaitبایدasyncباشد.
اجرای موازی
const [a, b] = await Promise.all([
fetch("/a").then(r => r.json()),
fetch("/b").then(r => r.json()),
]);
سریعتر از await پشتسرهم.
اشتباهات رایج
فراموشکردن await (یک Promise میگیری نه نتیجه)، یا نبود try/catch.
در پلیگراند، تابع
waitرا ببین که چطور با Promise یک تأخیر میسازد.