جهنم callback چیست؟

اگر در حوزه فرانت اند و برنامه نویسی جاوا اسکریپت فعالیت داشته باشید احتمالا "جهنم کال بک" را شنیده اید. می خواهیم کمی در مورد کال بک ها و جهنمی که ممکن است برایتان درست کند توضیح دهیم.

مفهوم Callback چیست؟

سبک برنامه نویسی همگام و ناهمگام که با کلمات کلیدی async و sync که سر واژه های کلمات "هم‌ زمان یا Synchronous" و همچنین "غیر ‌هم‌زمان یا Asynchronous" می باشند. مواقعی که میخواهیم کد ها و توابع بصورت همزمان و بصورت کاملا مستقل از هم اجرا شوند و با هم تداخلی نداشته باشند و یکی منتظر نتیجه تابع دیگری نماند از این امکان استفاده خواهیم کرد.

تابع Callback به تابعی گفته می شود که از طریق یک تابع دیگر صدا زده می شود و در صورتی این اتفاق می افتد که تابع اول کارش را انجام داده و تمام شده باشد.

حال این را در نظر بگیرید که توابع زیادی روی هم تعریف شوند که هر کدام وابسته به تابع دیگری باشند که خود آن نیز به تابع دیگری نیاز دارد و باید منتظر اتمام کار آن تابع باشد، به همین صورت که حتی در یک جمله هم خواننده را گیج می کند چه برسد. به این اتفاقی که ممکن است در آن گیر کنیم و درگیر آن شویم جهنم کال بک می کویند.

در جاوا اسکریپت هیچ چیز خاصی به نام Callback Hell وجود ندارد. این چیزی نیست جز یک نام و اصطلاحی که معروف شاده است. چیزی که ممکن است توسعه دهنده در آن بیفتد و گیر کند، جهنم کال بک نوع کد نویسی ای است که موقع نوشتن کدی است که شامل چندین توابع ناهمزمان است که به یکدیگر متصل هستند، به عنوان مثال:

getData1(function(x){
   getData2(x, function(y){
       getData3(y, function(z){ 
           ...
       });
   });
});

دلیل این امر این است که " نتایج " هر تابع بستگی به موارد قبلی دارد. کلمه ناهمزمان به معنای چیزی است که بعدا اتفاق می افتد.