فرض کنید این کد را اجرا میکنید:
console.log("A");
setTimeout(() => {
console.log("B");
}, 0);
console.log("C");بیشتر افراد انتظار دارند خروجی این باشد:
A
B
C
اما خروجی واقعی:
A
C
B
چرا؟
چون
setTimeout حتی با مقدار 0ms هم بلافاصله اجرا نمیشود.تابع ابتدا وارد Task Queue میشود.
سپس Event Loop بررسی میکند:
"آیا Call Stack خالی شده است؟"
اگر پاسخ مثبت باشد، آن را اجرا میکند.
---
🎯 نتیجه:
0msبه معنی اجرای فوری نیست.
بلکه یعنی:
"هر زمان Call Stack خالی شد."
💡 کسی که Event Loop را بفهمد، نصف باگهای Async JavaScript را راحتتر حل میکند.
@CodeVerse_dev