JavaScript Async

"async and await make promises easier to write"

async تابع را برای بازگشت Promise آماده می‌کند

await تابع را برای انتظار Promise آماده می‌کند

نحوه استفاده از Async

کلمات کلیدی قبل از تابع async تابع را برای بازگشت Promise آماده می‌کند:

مثال

async function myFunction() {
  return "Hello";
}

معادل:

async function myFunction() {
  return Promise.resolve("Hello");
}

در اینجا روش‌های استفاده از Promise آورده شده است:

myFunction().then(
  function(value) { /* کد در صورت موفقیت */ },
  function(error) { /* کد در صورت خطا */ }
);

مثال

async function myFunction() {
  return "Hello";
}
myFunction().then(
  function(value) {myDisplayer(value);},
  function(error) {myDisplayer(error);}
);

آزمایش کنید

یا ساده‌تر، زیرا شما انتظار مقدار عادی دارید (پاسخ عادی، نه خطا):

مثال

async function myFunction() {
  return "Hello";
}
myFunction().then(
  function(value) {myDisplayer(value);}
);

آزمایش کنید

نحوه استفاده از Await

کلمات کلیدی قبل از تابع await تابع را برای انتظار Promise آماده می‌کند:

let value = await promise;

await کلمات کلیدی فقط می‌توانند async در داخل یک تابع استفاده می‌شود.

مثال

بیایید به آرامی یاد بگیریم که چگونه از آن استفاده کنیم.

آموزش پایه

async function myDisplay() {
  let myPromise = new Promise(function(myResolve, myReject) {
    myResolve("I love You !!");
  });
  document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();

آزمایش کنید

در انتظار تاخیر

async function myDisplay() {
  let myPromise = new Promise(function(myResolve, myReject) {
    setTimeout(function() { myResolve("I love You !!"); }, 3000);
  });
  document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();

آزمایش کنید

در انتظار فایل

async function getFile() {
  let myPromise = new Promise(function(myResolve, myReject) {
    let req = new XMLHttpRequest();
    req.open('GET', "mycar.html");
    req.onload = function() {
      if (req.status == 200) {myResolve(req.response);}
      else {myResolve("File not Found");}
    };
    req.send();
  });
  document.getElementById("demo").innerHTML = await myPromise;
}
getFile();

آزمایش کنید

پشتیبانی مرورگر

ECMAScript 2017 کلمه کلیدی JavaScript را معرفی کرده است async و await.

در جدول زیر نسخه‌های اولیه مرورگرهایی که هر دو را به طور کامل پشتیبانی می‌کنند ذکر شده است:

Chrome IE Firefox Safari Opera
Chrome 55 Edge 15 Firefox 52 Safari 11 Opera 42
دسامبر 2016 آوریل 2017 مارس 2017 سپتامبر 2017 دسامبر 2016