پرامیس: راهی برای رهایی از جهنم CallBack Function
آنچه خواهید دید :
Toggleسلام!
چخبر از کال بک فانکشن های تو در تو؟
در سال ۲۰۰۵ درست زمانی که کال بک فانکشنهای تو در تو باعث اختلال در درک برنامه نویسی شده بودند promise پا به عرصه گذاشت.
گفتم چی؟ promise؟
چیست promise؟
با پرامیس ما میتوانیم بخشی از کدهامون را به صورت آسنکرون اجرا کنیم به طوری که پس از پایان اجرای کدهای آسنکرون و مشخص شدن نتیجه، یک تابع کالبک مناسب فراخوانی و اجرا شود.
خب این یعنی چی؟
یعنی ما در پرامیس نقطه شکست و موفقیت داریم. که در صورت موفقیت یک اتفاق بیوفتد و در صورت شکست یک اتفاق دیگر.
خب! بیایین با هم یکم تصویر و بررسی کنیم،
پرامیس دارای چرخه حیاط هست، که دارای سه وضعیت است:
1 ـ pending (حالت انتظار)
2 ـ Fullfilled (حالت تکمیل)
3 ـ Reject (حالت شکست)
حالت انتظار:
به زمانی گفته میشود که هنوز اجرای کد های آسنکرون تمام نشده و نتیجه مشخص نیست.
حالت تکمیل:
به زمانی گفته میشود که اجرای کد های آسنکرون با موفقیت تمام شده است.
حالت شکست:
به زمانی گفته میشود که اجرای کد های آسنکرون با شکست مواجه شده است.
خب! حواسم هست، دوتا اسم نا آشنای دیگه رو دارم میبینم، یادتونه گفتم: ما دارای دو حالت شکست و موفقیت هستیم؟
نام یا تعریف تابع موفقیت خود را درون then قرار میدهیم و نام یا تعریف تابع شکست خود را درون catch.
خب! البته میتونیم بدون این ها هم تابع های موفقیت و شکست خود را تعریف کنیم.
اصلا برنامه نویس ها اهل عملاند؛ یه مثال ببینیم:
///ساخت یک شی پرامیس let p = new Promise(executor); //تعریف تابع مشخص شده function executor(resolve, reject) { if (success) { resolve(); } else { reject(); } } //تعریف دو فانکشن موفقیت و شکست p.then(onFullfilled, onRejected); function onFullfilled() { //code } function onRejected() { //code }
با catch و then چطوری میشه پس؟
///ساخت یک شی پرامیس let p = new Promise(executor); //تعریف تابع مشخص شده function executor(resolve, reject) { if (success) { resolve(); } else { reject(); } } //then و catch تعریف تابع موفقیت و شکست درون p.then(function onFullfilled() { //code }).catch(function onRejected() { //code });
حتما الان دارید با خودتون میگید:
بهتر این مقاله رو ببندم و برم، قبل از اینکه از این گیج تر شم اما… نه
بیایین یه کد call back فانکشن و با هم ببینیم انقدر ازش حرف زدیم:
شما دوست دارید این و بخونید؟ حداقل من که نه!
پس بیایید به پرامیس بیشتر فکر کنیم.
و پارامیس برای این کد به مانند خانه تکانی مادرها درست یک هفته قبل از عید میماند.
فکر کنم مثال دوم شما رو ترغیب کرده باشه برای اطلاعات بیشتر یک سری به رفرنسهای ما بزنید:
درباره Fatemeh Satouri
{ "name" : "Fatemeh Satouri", "Skill" : ["coding", "User interface design"], "Abot Me" : "The war between a designer and a programmer in me goes on forever" }
نوشته های بیشتر از Fatemeh Satouri
خیلی مفید و کامل بود و مطلب اصلی به درستی بیان شده بود.
جالب بود مرسی از مطلب مفیدتون 🤩
عکس اول چیه ؟
سلام دوست عزیز. سعی کردم در این تصویر با یک مثال نزدیک به واقعیت ناخوانایی کال بک فانکشن های تو در تو را نشان دهم.
اگر اینقدر پیچیده هست، چرا کالبک فانکشن استفاده میشه اصلاً؟؟!
سلام.
فکر کنم این سایت جواب شما رو بده:
https://makimo.com/blog/callbacks-vs-promises-in-javascript/#:~:text=Callbacks%20are%20commonly%20used%20in,grained%20control%20over%20operation%20ordering.
مرسی از دقتتون.