آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

ارزش وعده داده شده

دسته بندی :اخبار سایت 28 مارس 2023 علیرضا بابامرادی 374
ارزش وعده داده شده

ارزش وعده داده شده

قطعاً بعداً در فصل به جزئیات بیشتری در مورد Promises خواهیم پرداخت — بنابراین اگر برخی از این موارد گیج کننده است نگران نباشید —

اما اجازه دهید به طور خلاصه نگاهی اجمالی به نحوه بیان مثال x + y از طریق Promise s بیندازیم:

function add(xPromise,yPromise) {
// `Promise.all([ .. ])` takes an array of promises,
// and returns a new promise that waits on them
// all to finish
return Promise.all( [xPromise, yPromise] )
// when that promise is resolved, let’s take the
// received `X` and `Y` values and add them together.
.then( function(values){
// `values` is an array of the messages from the
// previously resolved promises
return values[0] + values[1];
} );
}

// `fetchX()` and `fetchY()` return promises for
// their respective values, which may be ready
// *now* or *later*.
add( fetchX(), fetchY() )
// we get a promise back for the sum of those
// two numbers.
// now we chain-call `then(..)` to wait for the
// resolution of that returned promise.
.then( function(sum){

console.log( sum ); // that was easier!
} );

در این قطعه دو لایه Promises وجود دارد.

fetchX() و fetchY() مستقیماً فراخوانی می شوند و مقادیری که برمی گردانند (وعده می دهد!) به add(..) منتقل می شوند. ارزش‌های زیربنایی که این وعده‌ها نشان می‌دهند ممکن است اکنون یا بعداً آماده باشند، اما هر قول بدون توجه به یکسان بودن رفتار را عادی می‌کند. ما در مورد مقادیر X و Y به روشی مستقل از زمان استدلال می کنیم. آنها ارزش های آینده هستند.

لایه دوم وعده ای است که add(..) ایجاد می کند (از طریق Promise.all([ .. ])) و برمی گرداند که با فراخوانی then(..) منتظر می مانیم. وقتی عملیات add(..) کامل شد، مقدار آتی جمع ما آماده است و می توانیم آن را چاپ کنیم. منطق انتظار بر روی مقادیر آینده X و Y را در داخل add(..) پنهان می کنیم.

توجه: در داخل add(..) ، فراخوانی Promise.all([ .. ]) یک وعده ایجاد می کند (که در انتظار حل و فصل sozX است). فراخوانی زنجیره‌ای به .then(..) وعده دیگری ایجاد می‌کند، که خط بازگشتی مقادیر[0] + مقادیر[1] بلافاصله آن را حل می‌کند (با نتیجه جمع). بنابراین، فراخوانی then(..) که از انتهای فراخوان add(..) زنجیره می زنیم – در انتهای قطعه – در واقع بر روی دومین وعده بازگشتی عمل می کند، نه اولین وعده ایجاد شده توسط Promise. همه([ .. ]) . همچنین، اگرچه ما پایان آن ثانیه را زنجیر نمی کنیم (..) ، اما اگر ما انتخاب کرده بودیم که آن را رعایت کنیم/استفاده کنیم، قول دیگری نیز ایجاد کرده است. این چیزهای زنجیره‌ای وعده با جزئیات بسیار بیشتر در این فصل توضیح داده خواهد شد.

درست مانند سفارشات چیزبرگر، این امکان وجود دارد که حل یک قول به جای تحقق، رد کردن باشد. بر خلاف یک Promise محقق شده، که در آن مقدار همیشه برنامه‌ریزی شده است، یک مقدار رد – که معمولاً “دلیل رد” نامیده می‌شود – می‌تواند مستقیماً توسط منطق برنامه تنظیم شود یا می‌تواند به طور ضمنی از یک استثنا در زمان اجرا منتج شود.

با Promises، فراخوانی then(..) در واقع می تواند دو تابع داشته باشد، اولی برای انجام (همانطور که قبلا نشان داده شد)، و دومی برای رد کردن:

add( fetchX(), fetchY() )
.then(
// fullfillment handler
function(sum) {
console.log( sum );
},
// rejection handler
function(err) {
console.error( err ); // bummer!
}
);

 

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

لینک کوتاه:
0