تقریباً هرکسی که از جاوا اسکریپت استفاده کرده باشد ، در برخی موارد رابطه عشق / نفرت با آن داشته است. جاوا اسکریپت مانند آن دوست دختری است که گاهی ناامید کننده است اما چیزی در مورد او دارد که ما را شیفته خود می کند. جاوا اسکریپت دارای تعداد زیادی از موضوعات و مفاهیم جالب برای کاوش است. بیایید با یکی از آنها شروع کنیم - Promises.
دقیقاً مانند هیچ فیلم مرد عنکبوتی بدون گفتگو کامل نیست
هیچ مقاله ای مبتنی بر Promise بدون بیان اینکه Promises شما را از جهنم پاسخگویی نجات می دهد کامل نیست.
اما Promise های بیشتری وجود دارد و من این را به شما نشان خواهم داد.
جاوا اسکریپت یک زبان برنامه نویسی همزمان(synchronous) است ، اما به دلیل callback functions می توانیم آن را مانند یک زبان برنامه نویسی ناهمزمان(Asynchronous) کار کنیم.
Promises
Promise های موجود در جاوا اسکریپت بسیار شبیه وعده های داده شده در زندگی واقعی است.
به گفته MDN:
شی Promise نمایانگر اتمام (یا شکست) نهایی یک عملیات ناهمزمان(Asynchronous) و مقدار حاصل از آن است.
بازی با Promise ها 2 قسمت دارد-
ایجاد
Promise ها طرح اصلی را دارند
new Promise( /* executor */ function(resolve, reject) { ... } );
--MDN
تابع اجرا (اجرا کننده) دو پارامتر را حل و رد می کند که به نوبه خود callback functions هستند. Promise ها برای رسیدگی به عملیات ناهمزمان که کد مسدود کننده نیز نامیده می شود ، استفاده می شوند ، نمونه هایی از آنها تماس های DB ، I / O یا API هستند که توسط عملکرد مجری انجام می شوند. پس از اتمام آن ، فراخوانی عزم در موفقیت است یا رد عملکرد در هنگام خطا.
یک مثال ساده
let promise = new Promise(function(resolve, reject) {if(promise_kept)
resolve("done");else
reject(new Error("…"));
});
همانطور که مشاهده می شود ، promise ها بلافاصله مقادیر را بر نمی گردانند. منتظر موفقیت یا شکست است و به همین ترتیب برمی گردد. این اجازه می دهد تا متد های ناهمزمان(asynchronous) مقادیری مانند مقادیر همزمان(synchronous) را برگردانند. به جای بازگرداندن مقادیر بلافاصله ، متدهای async نوید بازگشت مقدار را می دهند.
پاراگراف بالا یک چیز را روشن می کند ، Promise حالاتی دارد!
Promise می تواند یکی از این حالت ها باشد-
حالت ها کاملاً خود گویا هستند ، بنابراین به جزئیات نمی پردازند. در اینجا یک تصویر از صفحه برای مرجع است.
مدیریت و استفاده از Promise
در بخش آخر نحوه ایجاد Promise ها را مشاهده کردیم ، اکنون بیایید ببینیم که چگونه می توان Promise ها را استفاده کرد.
const isDone = new Promise()
//...
const checkIfDone = () => {
isDone
.then(ok => {
console.log(ok)
})
.catch(err => {
console.error(error)
})
}
در حال اجرا ()checkIfDone. قول ()isDone. را اجرا می کند و منتظر حل آن با استفاده از callback است. در صورت وجود خطا در بلوک catch کنترل می شود.
Promise های زنجیره ای(Chaining)
می توان با ایجاد زنجیره ای از promise ها ، یک قول را به قول دیگری برگرداند. اگر یکی از همه افراد دیگر نیز شکست بخورد. زنجیره زدن همراه با Promise بسیار قدرتمند است زیرا به ما امکان کنترل ترتیب وقایع را در کد ما می دهد.
new Promise(function(resolve, reject) {
setTimeout(() => resolve(1), 1000);
}).then(function(result) {
alert(result);
return result * 3;
}).then(function(result) {
alert(result);
return result * 4;
}).then(function(result) {
alert(result);
return result * 6;
});
همه عملیات در آنجا بر می گردند و نتایج به تابع ()then بعدی برمی گردند و این روند تا کامل شدن زنجیره ادامه می یابد. آخرین عنصر در زنجیره نتیجه نهایی را برمی گرداند.
نتیجه
این فقط یک خلاصه اصلی از Promise های جاوا اسکریپت بود. Promise ها اگر به روش صحیح و در جای مناسب استفاده شوند ، کارهای بسیار بیشتری می توانند انجام دهند.
برای ثبت نظر باید وارد سایت شوید یا ثبت نام نمایید.
نظر شما با موفقیت در سیستم ثبت گردید.