Anophel | آنوفل
149 subscribers
278 photos
294 links
آنوفل | Anophel: دنیای بی ‌پایان امکانات برای برنامه‌ نویسان

https://anophel.com

پشتیبانی :
@anophel_support
Download Telegram
تو جاوا اسکریپت ما سه نوع کد داریم :
1. کد Synchronous
2. کد macrotask
3. کد Microtask

نکته کلیدی سوال این سه مورد هستند.
در اولی که پیش فرض جاوااسکریپت هست کد لاین به لاین اجرا می شود و تا لاین قبلی تمام نشد لاین جدید اجرا نمیشه.

دومی : بعد از اجرای کد های Synchronou و قبل میکروتسک ها اجرا می شود مثل setTimeout و setInterval و ..
.

سومی :این بخش نیز بعد از اجرای کد های ماکروتسک اجرا می شوند. مثلا : promiseها.

بررسی مثال:
بخش Synchronous :

console.log(1); بلافاصله اجرا می‌شود و مقدار 1 در کنسول چاپ می‌شود
setTimeout یک ماکروتسک تعریف می‌کند، اما چون setTimeout تنها تنظیم کننده‌ی تاخیر است، این عملیات به تعویق می‌افتد. پس setTimeout هنوز چیزی چاپ نمی‌کند

console.log(2); نیز بلافاصله اجرا می‌شود و مقدار 2 در کنسول چاپ می‌شود

console.log(4) بلافاصله بعد از promise.then فراخوانی می‌شود و مقدار 4 در کنسول چاپ می‌شود

پس از اتمام اجرای کدهایSynchrono نیز setTimeout که یک ماکروتسک است، اجرا می‌شود.ابتدا مقدار "timerStart" را در کنسول چاپ می‌کند.سپس success فراخوانی می‌شود که باعث می‌شود promise به حالت fulfilled برسد و یک میکروتسک (یعنی promise.then) به صف میکروتسک‌ها اضافه شود.سپس مقدار "timerEnd" را چاپ می‌کند.

در‌اخرم میکروتسک اجرا می شود. success

خروجی نهایی :
1
2
4
timerStart
timerEnd
success

آنوفل

#javascript #js #نکته #جاوااسکریپت