حلقه رویداد Node.js چطور کار میکنه؟
خلاصهٔ کاملتر
جاوااسکریپت روی یه call stack تکنخی اجرا میشه — ساختاری LIFO که توابع رو به ترتیب فراخوانی روی هم میچینه و وقتی هر تابع تموم شد، فریمش برداشته میشه. تا زمانی که این stack خالی نشه، هیچ callback ای نمیتونه اجرا بشه. این همون مفهوم «blocking» هست: وقتی یه تابع stack رو اشغال میکنه و نمیذاره چیز دیگهای اجرا بشه. مثلاً یه عملیات crypto سنگین میتونه پنج ثانیه stack رو قفل کنه و حتی تایمرهایی که موعدشون رسیده رو به تأخیر بندازه.
Node.js برای حل این مشکل از سه لایه کنار هم استفاده میکنه: V8 که جاوااسکریپت رو کامپایل و اجرا میکنه، libuv که یه کتابخونه C هست و حلقه رویداد و I/O غیرهمزمان رو پیادهسازی میکنه، و C++ bindings که پل ارتباطی بین این دو دنیاست. وقتی fs.readFile صدا میزنی، V8 اون رو به کد C++ میفرسته، libuv کار رو به thread pool میسپاره، و وقتی نتیجه آماده شد callback جاوااسکریپتیت رو روی stack قرار میده.
- دسترسی به خلاصهٔ کوتاه خبر
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- عدم نمایش تبلیغات
- دسترسی به خلاصهٔ کوتاه خبر
- دسترسی به خلاصهٔ کامل/اختصاصی خبر + نکات کلیدی
- ارسال اخبار مورد علاقه به ایمیل شما
- ارسال اخبار مورد علاقه به تلگرام شما
- عدم نمایش تبلیغات




