Code Module | کد ماژول
1.91K subscribers
357 photos
42 videos
6 files
355 links
Hello World 🌎

<> Earth is programmable if you code it </>

Group 👇🏻
@CodeModuleGap

Contact Us 👇🏻
@MrShahiin
@neoMahan
Download Telegram
چقدر از ‏Event Loop در جاوااسکریپت اطلاعات دارید؟ 🦦

‏Event Loop یه مکانیزم خیلی مهم توی جاوااسکریپته که باعث میشه این زبان با وجود Single-Threaded بودن، بتونه غیر بلاک‌کننده و (Asynchronous) کار کنه.

به زبان ساده Event Loop مسئول اینه که کارهای مختلف جاوااسکریپت رو مدیریت کنه و مطمئن بشه، کدهای ما به ترتیب و به درستی اجرا میشن.

اجزای اصلی Event Loop شامل موارد زیر هست 🦠

1. ‏Call Stack

یک لیست (ساختار داده‌ای ‏LIFO) که جاوااسکریپت توش توابع در حال اجرا رو نگه می‌داره. هر تابعی که صدا زده میشه میره روی استک و بعد از اجرا، ازش حذف میشه. این قلب تپنده اجرای کدهای همزمان (synchronous) هست.

2. ‏Web APIs

وقتی یه کار غیربلاک‌کننده مثل تایمر (setTimeout) یا ریکوستی(fetch) اجرا میشه، به Web APIs سپرده میشه. Web APIs این کارها رو در محیط مرورگر یا Node.js مدیریت می‌کنه و بعد از تموم شدن، نتیجه رو به Callback Queue می‌فرسته.

3. ‏Callback Queue

یه صف که توابع آماده اجرا مثل تایمرها و Event Listeners در اون نگهداری میشن. وقتی Call Stack خالی بشه، Event Loop این صف رو یکی‌یکی اجرا می‌کنه.

4.‏ Microtasks Queue

وظایفی مثل Promise.then و Mutation Observers در این صف قرار می‌گیرن. این صف همیشه قبل از Callback Queue پردازش میشه و اولویت بیشتری داره.

5. ‏Macrotasks Queue

وظایفی مثل setTimeout و setInterval در این صف قرار می‌گیرن. این صف بعد از Microtasks پردازش میشه و شامل کارهایی با اولویت پایین‌تره.

به زبان ساده، Event Loop مسئول اینه که کارهای مختلف جاوااسکریپت رو به ترتیب و به درستی اجرا کنه. این مکانیزم به جاوااسکریپت قدرت انجام عملیات سنگین مثل درخواست‌های شبکه و انیمیشن‌ها رو بدون قفل کردن برنامه میده.

از بحث Event Loop در اکثر مصاحبه ها سوال میاد و یادگیریش، بهتون در درک جاوااسکریپت خیلی کمک میکنه.


#eventloop
@CodeModule
🔥15👌4❤‍🔥3