آدرس : تهران میدان فردوسی خیابان ایرانشهر بین سمیه و طالقانی مجتمع تجاری میلاد واحد 9

پشتیبانی 24 ساعته : 02188867940 – 09927674217

برای مشاهده لیست علاقه مندی ها وارد شوید!

مشاهده محصولات فروشگاه
0

هیچ محصولی در سبد خرید نیست.

Callback

دسته بندی :اخبار سایت 27 مارس 2023 علیرضا بابامرادی 191
Callback

Callback

Callback ها واحد اساسی ناهمزمانی در JS هستند. اما آنها برای چشم انداز در حال تکامل برنامه نویسی async با بلوغ JS کافی نیستند.

اول، مغز ما چیزها را به روش‌های معنایی متوالی، مسدودکننده و تک رشته‌ای برنامه‌ریزی می‌کند، اما تماس‌های برگشتی جریان ناهمزمان را به روشی نسبتاً غیرخطی و غیر متوالی بیان می‌کنند، که استدلال درست در مورد چنین کدی را بسیار سخت‌تر می‌کند. دلیل بد در مورد کد، کد بدی است که منجر به باگ های بد می شود.

ما به راهی برای بیان ناهمزمانی به شیوه ای همزمان تر، متوالی تر و مسدودکننده تر، درست مانند مغزمان نیاز داریم.

دوم، و مهمتر از آن، تماس‌های برگشتی از وارونگی کنترل رنج می‌برند، زیرا به طور ضمنی کنترل را به شخص دیگری (اغلب یک ابزار شخص ثالث که تحت کنترل شما نیست!) می‌دهند تا ادامه برنامه شما را فراخوانی کند. این انتقال کنترل ما را به یک لیست مشکل‌ساز از مسائل مربوط به اعتماد هدایت می‌کند، مانند اینکه آیا تماس برگشتی بیشتر از آنچه انتظار داریم فراخوانی می‌شود یا خیر.

ابداع منطق موقت برای حل این مشکلات اعتماد ممکن است، اما دشوارتر از آن چیزی است که باید باشد، و نگه‌داشتن کد پیچیده‌تر و سخت‌تر را تولید می‌کند، و همچنین کدهایی را تولید می‌کند که احتمالاً به اندازه کافی در برابر این خطرات محافظت نمی‌شوند تا زمانی که به‌طور واضح توسط باگ‌ها گاز گرفته شوند. .

ما به یک راه‌حل کلی برای همه مسائل مربوط به اعتماد نیاز داریم،

راه‌حلی که می‌توان آن را برای هر تعداد تماس‌های برگشتی بدون سربار اضافی دیگ بخار استفاده کرد.

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

ما دو دسته عمده از کاستی‌ها را در استفاده از callbacks برای بیان ناهمزمانی برنامه و مدیریت همزمانی شناسایی کردیم: عدم توالی و عدم قابلیت اعتماد. اکنون که مشکلات را بیشتر درک می کنیم، وقت آن است که توجه خود را به الگوهایی معطوف کنیم که می توانند آنها را برطرف کنند.

موضوعی که می‌خواهیم ابتدا به آن بپردازیم، وارونگی کنترل است، اعتمادی که بسیار شکننده است و به راحتی از دست می‌رود.

به یاد داشته باشید که ما ادامه برنامه خود را در یک تابع callback می بندیم، و آن تماس را به طرف دیگری (به طور بالقوه حتی کد خارجی) تحویل می دهیم و فقط انگشتان خود را روی هم می گذاریم که با فراخوانی پاسخ به تماس، کار درست را انجام دهد.

ما این کار را انجام می‌دهیم زیرا می‌خواهیم بگوییم، “این است که بعداً، پس از اتمام مرحله فعلی، چه اتفاقی می‌افتد.”

اما اگر بتوانیم این وارونگی کنترل را وارونه کنیم چه؟ اگر بجای اینکه ادامه برنامه خود را به طرف دیگری واگذار کنیم، انتظار داشته باشیم که این قابلیت را به ما برگرداند تا بدانیم کارش چه زمانی تمام می‌شود، و سپس کد ما تصمیم بگیرد که در مرحله بعد چه کار کنیم؟

به این پارادایم قول می گویند.

وعده‌ها شروع به طوفان کردن دنیای JS کرده‌اند، زیرا توسعه‌دهندگان و نویسندگان مشخصات به طور ناامیدانه به دنبال رفع جنون جهنم پاسخ به تماس در کد/طراحی خود هستند. در واقع، اکثر APIهای همگام جدیدی که به پلتفرم JS/DOM اضافه می شوند، بر روی Promises ساخته می شوند. بنابراین احتمالاً ایده خوبی است که آنها را بیاموزید و یاد بگیرید، فکر نمی کنید!؟

توجه: کلمه “فورا” اغلب در این فصل استفاده می شود، به طور کلی برای اشاره به برخی اقدامات حل و فصل Promise. با این حال، اساساً در همه موارد، “فورا” به معنای رفتار صف شغلی است (به فصل 1 مراجعه کنید)، نه به معنای فعلی کاملاً همزمان.

علیرضا بابامرادی

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

  • چنانچه دیدگاهی توهین آمیز باشد تایید نخواهد شد.
  • چنانچه دیدگاه شما جنبه ی تبلیغاتی داشته باشد تایید نخواهد شد.
  • چنانچه از لینک سایر وبسایت ها و یا وبسایت خود در دیدگاه استفاده کرده باشید تایید نخواهد شد.
  • چنانچه در دیدگاه خود از شماره تماس، ایمیل و آیدی تلگرام استفاده کرده باشید تایید نخواهد شد.
  • چنانچه دیدگاهی بی ارتباط با موضوع آموزش مطرح شود تایید نخواهد شد.

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

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

لینک کوتاه:
0