تایمر های رویداد ها / Event Timers

مثال قبلی کد کاملا قانونی رو نشون میده و یک تایمر فراخوانی فانکشن رو پیاده سازی کرده. با این حال، ایجاد تایمر ها به این روش یک سری معایبی هم داره. اولین مسئله اینه که از اونجایی که جاوا اسکریپت single-threaded هست، کل اپلیکیشن توی یک حلقه قرار میگیره و هیچ راهی برای پردازش دیتای خارج از حلقه به غیر از break کردنش وجود نداره. دومین مسئله توی مثال قبلی اینه که از اونجایی که جاوا اسکریپت همچنان دارای event loop خودش هست که توی پس زمینه در حال اجراست، کد اون مثال در حقیقت داشته دو تا حلقه بینهایت رو اجرا میکرده، که یکیش توی یکی دیگه قرار گرفته:

chapter6.infinite_nested_loops

از اونجایی که فراخوانی تکرارشونده و با تاخیر فانکشن ها میتونه یک نیاز مرسوم توی برنامه نویسی باشه، جاوا اسکریپت دوتا فانکشن برای ساده تر کردن استفاده از تایمر ها، بدون اینکه خودمون بخوایم حلقه خودمون رو توسعه بدیم، ارائه میده. این فانکشن ها setInterval و setTimeout هستن.