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

تابع setTimeout

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

console.log("Start");
setTimeout(() => {
  console.log("Delayed log after 2 seconds");
}, ۲۰۰۰);
console.log("End");

در این مثال، "Start" و "End" بلافاصله در کنسول ثبت می‌گردد، در حالی که تابع callback ارسال شده به setTimeout پس از تاخیر ۲ ثانیه‌ای اجرا می‌شود. این مثال نشان می‌دهد که تابع setTimeout برای اجرای یک بار یک تابع، پس از یک تاخیر معین مورد استفاده قرار می‌گیرد.

تابع setInterval

از طرف دیگر، تابع setInterval برای اجرای مکرر یک تابع در یک بازه زمانی ثابت استفاده می‌شود. این تابع برای سناریوهایی مناسب است که در آن ما نیاز به انجام یک تسک در فواصل منظم داریم تا زمانی که آن تسک به صراحت متوقف شود. به عنوان مثال:

let count = 0;
const intervalId = setInterval(() => {
  count++;
  console.log("Count:", count);
  if (count >= 5) {
    clearInterval(intervalId); // Stop the interval after 5 iterations
  }
}, ۱۰۰۰);

در این مثال، تابع callback ارسال شده به setInterval هر ۱ ثانیه یک بار (۱۰۰۰ میلی ثانیه) اجرا می‌شود، مقدار count را افزایش می‌دهد و آن را در کنسول ثبت می‌کند. این بازه تا زمانی ادامه می‌یابد که مقدار count به ۵ برسد. در این مرحله، تابع clearInterval برای متوقف کردن شمارش فراخوانی می‌شود.

تفاوت‌های بین تابع setTimeout و تابع setInterval

تفاوت اصلی بین تابع setTimeout و تابع setInterval به شرح زیر می‌باشد:

بررسی Best Practiceها در مورد توابع setTimeout و setInterval

هنگام کار با setTimeout و setInterval، بهتر است که موارد زیر را در نظر داشته باشیم:

جمع‌بندی

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