asyncوawait ساخت پروميس را براي نوشتن آسانتر ميكند .
asyncتابعي ميسازد كه يك پروميس برگشت ميدهد
awaitتابعي ميسازد كه براي پروميس انتظار ايجاد ميكند .
كيوردasync قبل از يك تابع باعث ميشود كه تابع قولي را برگشت دهد .
مثال ـ استفادهasync
async function myFunction() { return "Hello"; }
آن مشابه با كد زيراست:
function myFunction() { return Promise.resolve("Hello"); }
در زير نحوي استفاده ازPromise آمده است .
myFunction().then( function(value) { /* code if successful */ }, function(error) { /* code if some error */ } );
مثال ـ استفادهasync با متد then
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 فقط ميتواند در داخل يك تابع باasync باشد.
كلمه كليدي awaitباعث ميشود كه تابع اجرا را متوف كند وقبل ازادامه آن منتظر يك قول حل شده بماند:
مثال ـ براي تكميل آهسته تر مطالب مثال با فرم ويا نحو پايه(Basic Syntax) آماده است.
async function myDisplay() { let myPromise = new Promise(function(resolve, reject) { resolve("I love You !!"); }); document.getElementById("demo").innerHTML = await myPromise; } myDisplay();
دو آرگومانresolve و reject از پيش تعريف شده جاوااسكريپت ميباشند، آنها توسط ما ايجاد نمي شوند، اما زماني كه تابع اجرائي آماده شد يكي آنها را فراخوان يا مورد اسفاده قرار ميدهيم.
بيشتر مواقع نياز بهreject function نمي باشد .
مثال ـ بدون استفاده ازreject function
async function myDisplay() { let myPromise = new Promise(function(resolve) { resolve("I love You !!"); }); document.getElementById("demo").innerHTML = await myPromise; } myDisplay();
مثال ـ درانتظار مهلت زماني(Waiting for a Timeout )
async function myDisplay() { let myPromise = new Promise(function(resolve) { setTimeout(function() {resolve("I love You !!");}, 3000); }); document.getElementById("demo").innerHTML = await myPromise; } myDisplay();
مثال ـ در انتظار يك فايل( Waiting for a File)
async function getFile() { let myPromise = new Promise(function(resolve) { let req = new XMLHttpRequest(); req.open('GET', "mycar.html"); req.onload = function() { if (req.status == 200) { resolve(req.response); } else { resolve("File not Found"); } }; req.send(); }); document.getElementById("demo").innerHTML = await myPromise; } getFile();
ECMAScript 2017كيورد هايasync , await جاوااسكريپت را معرفي كرد .
در جدول زير اعداد اولين نسخه اي هستند كه از اشياء پروميس كاملا پشتيبباني ميكنند.
55
Dec 2016 | 15
Apr 2017 | 52
Mar 2017 | 11
Sep 2017 | 42
Dec 2016 |