برنامه نویسی

درک حلقه رویداد JavaScript (به زبان ساده)

جاوا اسکریپت اغلب به عنوان تک رشته ای و ناهمزمان توصیف می شود-اما چگونه ممکن است؟ پاسخ در حلقه رویداد نهفته است.

حلقه رویداد چیست؟

حلقه رویداد مکانیسمی است که به JavaScript اجازه می دهد تا با وجود اجرای یک موضوع واحد ، مانند کار با I/O یا تایمر ، عملیات غیر مسدود کننده را انجام دهد. این کار با هماهنگی بین پشته تماس ، API های وب و صف کار ، چندین کار را مدیریت می کند.

چگونه کار می کند؟

در اینجا یک جریان ساده وجود دارد:

Call Stack: هنگامی که کد را اجرا می کنید ، JavaScript آن را به صورت خط اجرا می کند ، تماس های عملکردی را روی پشته تماس فشار می دهد و پس از اتمام آنها را خاموش می کند.

API های وب: هنگامی که توابع ناهمزمان مانند SettimeOut ، Fetch یا شنوندگان رویداد خوانده می شوند ، مرورگر آنها را به طور جداگانه از طریق API های وب اداره می کند. پس از اتمام کار ، پاسخ به تماس مرتبط در صف کار قرار می گیرد.

Task Queue: این صف ، تمام تماس های برگشتی را که آماده اجرا هستند ، نگه می دارد.

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

نکته مهم: تا زمانی که پشته تماس شلوغ باشد (به عنوان مثال ، یک کار همزمان همزمان) ، حلقه رویداد نمی تواند کارهای جدید را تحت فشار قرار دهد – منجر به تأخیرهای احتمالی شود.

مثال سریع

Copy
Edit
console.log('Start');

setTimeout(() => {
  console.log('Timeout callback');
}, 0);`

console.log('End');
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

sql
Copy
Edit
Start
End
Timeout callback
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

حتی اگر مدت زمان 0MS باشد ، هنوز منتظر است تا پشته فعلی قبل از اجرای برگشت پاسخ پاک شود!

پایان

حلقه رویداد همان چیزی است که JavaScript را بدون خواندن چند رشته ای ناهمزمان می کند. این تضمین می کند که در حالی که کد شما در یک موضوع واحد اجرا می شود ، عملیاتی مانند درخواست شبکه یا تایمر کل برنامه را مسدود نمی کند.

درک این امر برای نوشتن برنامه های کارآمد و پاسخگو JavaScript مهم است!

نوشته های مشابه

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

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

دکمه بازگشت به بالا