Javascript, مقالات

پرامیس: راهی برای رهایی از جهنم CallBack Function

onai

سلام!

چخبر از کال بک فانکشن های تو در تو؟

پرامیس

در سال ۲۰۰۵ درست زمانی که کال بک فانکشن‌های تو در تو باعث اختلال در درک برنامه نویسی شده بودند 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 فانکشن و با هم ببینیم انقدر ازش حرف زدیم:

پرامیس

شما دوست دارید این و بخونید؟ حداقل من که نه!

پس بیایید به پرامیس بیشتر فکر کنیم.

و پارامیس برای این کد به مانند خانه تکانی مادرها درست یک هفته قبل از عید می‌ماند.

فکر کنم مثال دوم شما رو ترغیب کرده باشه برای اطلاعات بیشتر یک سری به رفرنس‌های ما بزنید:

Freecodecamp

Mozila

W3school

 

درباره 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" }

  1. مجید کارگر گفت:

    خیلی مفید و کامل بود و مطلب اصلی به درستی بیان شده بود.

  2. مهسا گفت:

    جالب بود مرسی از مطلب مفیدتون 🤩

  3. YoYo! گفت:

    عکس اول چیه ؟

    1. Fatemeh Satouri گفت:

      سلام دوست عزیز. سعی کردم در این تصویر با یک مثال نزدیک به واقعیت ناخوانایی کال بک فانکشن های تو در تو را نشان دهم.

  4. محمد گفت:

    اگر اینقدر پیچیده هست، چرا کالبک فانکشن استفاده میشه اصلاً؟؟!

    1. Fatemeh Satouri گفت:

      سلام.
      فکر کنم این سایت جواب شما رو بده:
      https://makimo.com/blog/callbacks-vs-promises-in-javascript/#:~:text=Callbacks%20are%20commonly%20used%20in,grained%20control%20over%20operation%20ordering.

      مرسی از دقتتون.

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

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