تو جاوا اسکریپت ما سه نوع کد داریم :
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 #نکته #جاوااسکریپت
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 #نکته #جاوااسکریپت
Anophel
Anophel | Where Developers Create Their Own Path
Anophel is an ecosystem for developers—a place for those who prefer building over consuming. If you want to create tools, think differently, and forge your own path in coding, Anophel is with you.