مقدمه

دو تابع مهم setTimeout و setInterval برای زمان‌بندی اجرای کد در آینده یا به صورت تکراری در جاوااسکریپت استفاده می‌شوند. این توابع پایه توسعه رابط کاربری، انیمیشن، آلارم و کنترل تایمرها هستند. کنترل زمان اجرا به شما اجازه می‌دهد تجربه کاربری بهتری بسازید، عملیات غیرهمزمان انجام دهید یا اجرای کدها را در فواصل مشخص کنترل کنید.

setTimeout: اجرای تاخیری یک تابع

تابع setTimeout برای اجرای یک تابع پس از مدت مشخص (برحسب میلی‌ثانیه) استفاده می‌شود. ساختار آن ساده است: setTimeout(fn, delay) که fn تابعی است که باید اجرا شود و delay مدت زمان تاخیر بر حسب میلی‌ثانیه است. مثال زیر را ببینید.

Copy Icon JAVASCRIPT
setTimeout(function() {
  console.log("2 seconds elapsed");
}, 2000);

این کد یک تابع را پس از ۲۰۰۰ میلی‌ثانیه (۲ ثانیه) اجرا می‌کند و پیام مورد نظر را در کنسول چاپ می‌نماید.

setInterval: اجرای تکراری یک تابع

setInterval یک تابع را با فاصله زمانی مشخص (برحسب میلی‌ثانیه) بارها و بارها اجرا می‌کند تا زمانی که صریحاً متوقف شود. مثال زیر را ببینید.

Copy Icon JAVASCRIPT
let count = 0;
let timer = setInterval(function() {
  count++;
  console.log(`second ${count}`);
  if (count === 5) clearInterval(timer);
}, 1000);

این کد هر ثانیه مقدار count را افزایش می‌دهد و پیام مربوط به ثانیه فعلی را چاپ می‌کند؛ پس از رسیدن به عدد ۵، با clearInterval اجرای تایمر متوقف می‌شود.

ارسال آرگومان و شناسه تایمر

می‌توانید به setTimeout و setInterval آرگومان اضافی نیز بدهید که به تابع callback ارسال شود. همچنین شناسه تایمر برای مدیریت و لغو آن قابل استفاده است. مثال زیر را ببینید.

Copy Icon JAVASCRIPT
setTimeout(function(msg) {
  console.log(msg);
}, 1500, "deferred message");

پیام "deferred message" پس از ۱.۵ ثانیه به تابع callback ارسال و چاپ می‌شود.

setTimeout و setInterval ابزارهای اصلی مدیریت زمان‌بندی در جاوااسکریپت هستند و تقریباً در همه پروژه‌ها کاربرد دارند؛ چه در انیمیشن، چه در تاخیر درخواست‌ها و چه برای ساخت تایمرها.

همیشه تایمرهای setInterval را در زمان مناسب با clearInterval متوقف کنید تا از مصرف بیهوده منابع و بروز باگ جلوگیری شود.