JavaScript متوازي

"async and await make promises easier to write"

async جعل الدالة تعود Promise

await جعل الدالة تنتظر Promise

قواعد Async

الكلمة المفتاحية قبل الدالة async جعل الدالة تعود promise:

مثال

وظيفة متوازية myFunction() {
  تعود "Hello";
}

يساوي:

وظيفة متوازية myFunction() {
  تعود Promise.resolve("Hello");
}

هذه هي طرق استخدام Promise:

myFunction().then(
  وظيفة (قيمة) { /* رمز النجاح */ },
  وظيفة (خطأ) { /* رمز الأخطاء */ }
);

مثال

وظيفة متوازية myFunction() {
  تعود "Hello";
}
myFunction().then(
  وظيفة (قيمة) {myDisplayer(value);},
  وظيفة (خطأ) {myDisplayer(error);}
);

جرب بنفسك

أو ببساطة أكبر، لأنك توقعت القيمة الطبيعية (إجابة طبيعية وليس خطأ):

مثال

وظيفة متوازية myFunction() {
  تعود "Hello";
}
myFunction().then(
  وظيفة (قيمة) {myDisplayer(value);}
);

جرب بنفسك

قواعد Await

الكلمة المفتاحية قبل الدالة await لجعل الدالة تنتظر promise:

قيمة = await promise;

await الكلمات المفتاحية يمكن أن تكون فقط async في الدالة.

مثال

دعونا نتعلم ببطء كيفية استخدامه.

القواعد الأساسية

وظيفة متوازية myDisplay() {
  دعوة myPromise = الجديدة Promise(function(myResolve, myReject) {
    myResolve("I love You !!");
  });
  document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();

جرب بنفسك

الانتظار للتحديد الزمني

وظيفة متوازية myDisplay() {
  دعوة myPromise = الجديدة Promise(function(myResolve, myReject) {
    setTimeout(function() { myResolve("I love You !!"); }, 3000);
  });
  document.getElementById("demo").innerHTML = await myPromise;
}
myDisplay();

جرب بنفسك

الانتظار للحصول على الملف

وظيفة متوازية getFile() {
  دعوة myPromise = الجديدة Promise(function(myResolve, myReject) {
    دعوة req = الجديدة 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