কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে setInterval() নির্দিষ্ট সময় বা সংখ্যা পরেই বন্ধ করা

setInterval() অনন্তকাল চলে। এটি নির্দিষ্ট সময় পর বা নির্দিষ্ট সংখ্যক এক্সিকিউশন পর বন্ধ করতে শর্তসাপেক্ষ clearInterval() ব্যবহার করতে হয়।

উদাহরণ: ৩০ সেকেন্ড পর বন্ধ হবে

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>setInterval Stop Demo</title>
</head>
<body>
  <script>
    var now = new Date().getTime();
    var interval = setInterval(function () {
      // ৩০ সেকেন্ড (30000 মিলিসেকেন্ড) পর বন্ধ
      if (new Date().getTime() - now > 30000) {
        clearInterval(interval);
        return;
      }
      console.log("working");
    }, 2000); // প্রতি ২ সেকেন্ডে একবার
  </script>
</body>
</html>

চলানো পদ্ধতি

ফাইলটি index.html নামে সেভ করুন এবং VS Code-এ "Open with Live Server" দিয়ে রান করুন।

আউটপুট

কনসোলে প্রতি ২ সেকেন্ডে "working" প্রিন্ট হবে ৩০ সেকেন্ড ধরে (মোট ~১৫ বার), তারপর বন্ধ হয়ে যাবে।

ব্যাখ্যা

  • now - শুরুয়ের টাইমস্ট্যাম্প সংরক্ষণ।
  • setInterval - প্রতি ২০০০ মিলিসেকেন্ড (২ সেকেন্ড) ইন্টারভালে ফাংশন রান করে।
  • প্রতিবার চেক করা হয়: বর্তমান টাইম - শুরুয়ের টাইম > ৩০০০০ কিনা।
  • সত্য হলে clearInterval(interval) দিয়ে ইন্টারভাল বন্ধ করা হয়।

বিকল্প: নির্দিষ্ট সংখ্যক এক্সিকিউশন পর বন্ধ

let count = 0;
const maxRuns = 10;
const interval = setInterval(() => {
  console.log("Run:", ++count);
  if (count >= maxRuns) {
    clearInterval(interval);
    console.log("Stopped after", maxRuns, "runs");
  }
}, 1000);

আধুনিক প্যাটার্ন: Promise + async/await


function runInterval(callback, intervalMs, maxRunsOrTime) {
  return new Promise(resolve => {
    let count = 0;
    const start = Date.now();
    const timer = setInterval(() => {
      callback();
      count++;
      const shouldStop = typeof maxRunsOrTime === 'number' 
        ? count >= maxRunsOrTime 
        : Date.now() - start >= maxRunsOrTime;
      if (shouldStop) {
        clearInterval(timer);
        resolve(count);
      }
    }, intervalMs);
  });
}

// ব্যবহার
await runInterval(() => console.log('tick'), 2000, 30000); // ৩০ সেকেন্ড
// বা
await runInterval(() => console.log('tick'), 2000, 10); // ১০ বার
  1. জাভাস্ক্রিপ্টে বাটন ক্লিক করলে টেক্সটফিল্ড খালি করা

  2. জাভাস্ক্রিপ্টে নির্দিষ্ট সময়ে ফাংশন ট্রিগার করুন

  3. জাভাস্ক্রিপ্টে স্ট্রিংয়ে নতুন লাইন (new line) যোগ করা

  4. জাভাস্ক্রিপ্টে স্ক্রোল ডাউন লুপ কীভাবে বন্ধ করবেন?