باسلام و خسته نباشید
در جایی که صحبت از تاخیر ۰ شد من مطلب لینک زیر رو خوندم و به همه پیشنهاد میکنم مطالعه کنن:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/EventLoop#adding_messages
سوال من اینه:
۱. آیا با توجه به مطالب گفته شده میشه نتیجه گرفت که جاوااسکریپت اول همه کد های صفحه ما(هرچقدر هم که طولای باشه و اجرائش طول بکشه) رو اجرا میکنه و بعد میره سراغ اجرای setTimeout های تاخیر ۰؟
۲. آیا موتور جاوااسکریپت کل کدهای مارو همون ابتدای لود صفحه بعنوان یک Message واحد میذاره توی Event Loop و پس از اینکه کل کد ما تا انتها اجراء شد میره سراغ Message های مربوط به setTimeout ؟
سلام دوست عزیز
بابت دقتی که دارید بهتون تبریک میگم
۱- بله درسته نه تنها تاخیر صفر بلکه تمامی کدهایی که کار scheduling را انجام میدن مثل setInterval - البته در مورد در جلسات آتی بهتر و کامل تر توضیح داده شده است.
۲- خیر اینطور نیست همانطور که در اسلایدها به نمایش گذاشته شده است هر خط از کد به عنوان یک message در استک قرار میگیره و وقتی اجرا میشه میره سراغ کد بعدی. موضوع اینجاست که نحوه مدیریت و اجرای کدهای اصلی و کدهای مرتبط با BOM به ویژه موارد مرتبط با scheduling متفاوت هست’’