Event Loop، Task Queue و Microtask Queue چگونه کار می‌کنند؟

مفهوم Event Loop

Event Loop در JavaScript یک مکانیزم است که وظیفه اجرای کدهای asynchronous را بر عهده دارد. در واقع، JavaScript یک زبان single-threaded است که به معنای این است که تنها یک رشته اجرایی برای اجرای کد دارد. اما با وجود این، JavaScript قادر است کدهای asynchronous را نیز اجرا کند.

Task Queue

Task Queue یک صف انتظار برای اجرای کدهای asynchronous است. وقتی یک کد asynchronous اجرا می‌شود، ابتدا به Task Queue اضافه می‌شود و منتظر می‌ماند تا Event Loop آن را اجرا کند.

مثال Task Queue:


setTimeout(() => {
  console.log('Hello, World!');
}, 1000);

Microtask Queue

Microtask Queue نیز یک صف انتظار است که برای اجرای کدهای microtask وظیفه دارد. کدهای microtask از اهمیت بالایی برخوردارند و اولویت بالاتری نسبت به کدهای Task Queue دارند.

مثال Microtask Queue:


Promise.resolve().then(() => {
  console.log('Microtask executed!');
});

عملکرد Event Loop

وقتی Event Loop در حال اجرای کدهاست، ابتدا به Microtask Queue می‌روند و تمام کدهای microtask را اجرا می‌کند. سپس به Task Queue می‌روند و کدهای asynchronous را اجرا می‌کنند. این عمل تا زمانی ادامه می‌یابد که هیچ کدی برای اجرا باقی نمانده باشد.

نتیجه گیری

با توجه به توضیحات بالا، Event Loop، Task Queue و Microtask Queue در JavaScript نقش مهمی در اجرای کدهای asynchronous ایفا می‌کنند و از اهمیت بالایی برخوردارند. آشنایی با این مفاهیم به توسعه دهندگان کمک می‌کند تا بتوانند کدهایی بهتر و بهینه‌تر بنویسند.