JavaScript متوازي
- الصفحة السابقة JS Promise
- الصفحة التالية مقدمة لـ DOM
"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 |
- الصفحة السابقة JS Promise
- الصفحة التالية مقدمة لـ DOM