تكرار السؤال: …
الإجابة المختصرة
تنفذ الـ Microtasks فور انتهاء المهمة الحالية وقبل أي Macrotask تالية، مما يعني أن طابور الـ Microtasks يُفرغ تماماً قبل التقدم في مراحل الـ Event Loop.
الشرح
الـ Macrotasks هي أحداث مراحل الـ Event Loop مثل مؤقتات setTimeout ومستمعات الـ I/O وأحداث setImmediate. أما الـ Microtasks فتشمل process.nextTick وPromise callbacks وqueueMicrotask. عند انتهاء كود JavaScript الحالي، يتم تفريغ طابور microtasks بالكامل قبل التقدم للمرحلة التالية.
مثال بالكود
queueMicrotask(() => console.log("Micro"));
setTimeout(() => console.log("Macro"), 0);أخطاء شائعة
- وضع حلقة غير متناهية داخل queueMicrotask أو process.nextTick مما يحجب الـ Event Loop تماماً عن أي I/O.
أسئلة متابعة
- ما هي المراحل الأساسية للـ Event Loop في Node.js وكيف تعالج المهام المختلفة؟
- ما الفرق الجوهري بين process.nextTick() و setImmediate() في Node.js؟