ارزش آتی
ارزش آتی
این سناریو را تصور کنید: من به سمت پیشخوان یک رستوران فست فود می روم و یک چیزبرگر سفارش می دهم. 1.47 دلار به صندوقدار می دهم. با ثبت سفارش و پرداخت هزینه آن، درخواست بازگشت ارزش (چیزبرگر) را داده ام. من یک معامله را شروع کردم.
اما اغلب، شسبرگر فوراً برای من در دسترس نیست. صندوقدار به جای چیزبرگرم چیزی به من می دهد: رسیدی که شماره سفارش روی آن است. این شماره سفارش یک وعده IOU (“من به شما مدیونم”) است که تضمین می کند که در نهایت چیزبرگرم را دریافت کنم.
بنابراین من روی رسید و شماره سفارش خود نگه می دارم. می دانم که نشان دهنده چیزبرگر آینده من است، بنابراین دیگر لازم نیست نگران آن باشم – جدا از اینکه گرسنه هستم!
در مدتی که منتظر هستم، میتوانم کارهای دیگری انجام دهم، مثلاً برای دوستی پیامکی بفرستم که میگوید: “هی، میتوانی برای ناهار به من ملحق شوی؟ من میروم چیزبرگر بخورم.”
من قبلاً در مورد چیزبرگر آینده ام استدلال می کنم ، اگرچه هنوز آن را در دست ندارم. مغز من قادر به انجام این کار است زیرا با شماره سفارش به عنوان یک مکان نگهدارنده چیزبرگر رفتار می کند. مکاندار اساساً زمان ارزش را مستقل میکند. این یک ارزش آینده است.
بالاخره می شنوم: «فرمان 113!» و من با خوشحالی با قبض در دست به سمت پیشخوان برگشتم. رسیدم را به صندوقدار می دهم و در عوض چیزبرگرم را می گیرم.
به عبارت دیگر، هنگامی که ارزش آینده من آماده شد، من ارزش-وعده خود را با خود ارزش عوض کردم.
اما یک نتیجه ممکن دیگر وجود دارد. آنها با شماره سفارش من تماس می گیرند، اما وقتی می روم چیزبرگرم را پس بگیرم، صندوقدار با تأسف به من می گوید: “متاسفم، اما به نظر می رسد همه چیزبرگر ما تمام شده است.” با کنار گذاشتن ناامیدی مشتری از این سناریو برای لحظهای، میتوانیم ویژگی مهم ارزشهای آینده را ببینیم: آنها میتوانند موفقیت یا شکست را نشان دهند.
هر بار که چیزبرگر سفارش میدهم، میدانم که یا بالاخره یک چیزبرگر میگیرم یا خبر غم انگیز کمبود چیزبرگر را میگیرم و باید برای ناهار چیز دیگری پیدا کنم.
توجه: در کد، همه چیز به این سادگی نیست، زیرا از نظر استعاری ممکن است هرگز شماره سفارش صدا زده نشود، در این صورت ما به طور نامحدود در یک حالت حل نشده باقی میمانیم. بعداً به بررسی آن پرونده خواهیم پرداخت.
ارزش ها در حال حاضر و بعد
همه اینها ممکن است از نظر ذهنی بیش از حد انتزاعی به نظر برسد که در کد شما اعمال نشود. پس بیایید دقیق تر باشیم.
با این حال، قبل از اینکه بتوانیم نحوه عملکرد Promises را به این روش معرفی کنیم، میخواهیم کدهایی را که قبلاً درک کردهایم استخراج کنیم – callbacks! — چگونه می توان با این ارزش های آینده برخورد کرد.
قوانین ارسال دیدگاه در سایت