خط فکری
خط فکری
همانطور که به نظر مضحک می آید برای اینکه چگونه روز خود را برنامه ریزی می کنیم و فکر می کنیم که چه کاری انجام دهیم و به چه ترتیبی انجام دهیم، با این وجود دقیقاً نحوه عملکرد مغز ما در سطح عملکردی است. به یاد داشته باشید، این چندوظیفه ای نیست، بلکه فقط تعویض سریع متن است.
دلیل اینکه نوشتن کد رویداد ناهمگام برای ما بهعنوان توسعهدهنده دشوار است، بهویژه زمانی که تنها چیزی که در اختیار داریم، بازگشت به تماس برای انجام آن است، این است که جریان تفکر/برنامهریزی آگاهی برای بسیاری از ما غیرطبیعی است.
ما به صورت گام به گام فکر می کنیم، اما ابزارها (بازخوانی ها) که در کد در دسترس ما هستند، هنگامی که از همگام به ناهمزمان حرکت می کنیم، به صورت گام به گام بیان نمی شوند.
و به همین دلیل است که نوشتن دقیق و استدلال در مورد کد JS ناهمگام با تماسهای برگشتی بسیار دشوار است: زیرا برنامهریزی مغز ما اینگونه نیست.
توجه: تنها چیزی که بدتر از ندانستن دلیل شکستن برخی کدها است، این است که ندانیم چرا در وهله اول کار می کند! این ذهنیت کلاسیک “خانه از کارت” است: “این کار می کند، اما مطمئن نیستم چرا، بنابراین هیچ کس آن را لمس نمی کند!” ممکن است شنیده باشید، “جهنم دیگران هستند” (سارتر)، و میم برنامه نویس، “جهنم کد دیگران است.” من واقعاً معتقدم: “جهنم درک نکردن رمز خودم است.” و پاسخ به تماس یکی از مقصران اصلی است.
تماس های تودرتو/زنجیری
در نظر بگیرید:
listen( “click”, function handler(evt){
setTimeout( function request(){
ajax( “http://some.url.1”, function response(text){
if (text == “hello”) {
handler();
}
else if (text == “world”) {
request();
}
} );
}, 500) ;
} );
یک کد شانس خوب وجود دارد که برای شما قابل تشخیص است. ما زنجیره ای از سه تابع تو در تو داریم که هر کدام یک مرحله از یک سری ناهمزمان را نشان می دهد (وظیفه، “فرایند”).
این نوع کد اغلب “جهنم پاسخ به تماس” نامیده می شود، و گاهی اوقات به عنوان “هرم عذاب” نیز شناخته می شود (به دلیل شکل مثلثی رو به پهلو به دلیل تورفتگی تو در تو).
اما «جهنم پاسخ به تماس» در واقع تقریباً هیچ ربطی به تورفتگی/تورفتگی ندارد. این یک مشکل بسیار عمیق تر از این است. در ادامه این فصل خواهیم دید که چگونه و چرا.
ابتدا منتظر رویداد “کلیک” هستیم، سپس منتظر روشن شدن تایمر هستیم، سپس منتظر پاسخ Ajax هستیم که در آن نقطه ممکن است همه این کارها را دوباره انجام دهد. در نگاه اول، ممکن است به نظر برسد که این کد ناهمزمانی خود را به طور طبیعی با برنامه ریزی متوالی مغز ترسیم می کند.
اول (اکنون)، ما:
listen( “..”, function handler(..){
// ..
} );
سپس بعداً، ما:
قوانین ارسال دیدگاه در سایت