پیشرفته · ۱۱ دقیقه مطالعه

برنامه‌نویسی ناهمگام: 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 یک تأخیر می‌سازد.

🧪

خودت امتحان کن

اجرا در مرورگرِ خودت — امن

کد را تغییر بده و «اجرا» را بزن. این کد فقط در مرورگر خودت اجرا می‌شود.

برای ثبت پیشرفت و کسب XP وارد شو.

ورود به میدان
→ کلاس‌ها و شیءگرایی
Fetch API — گرفتن داده از سرور ←