⏱️ JavaScript এ Time-based Function কী?

JavaScript asynchronous nature-এর কারণে কিছু ফাংশন আছে যেগুলো দিয়ে আমরা কোডকে নির্দিষ্ট সময় পরে অথবা নিয়মিত সময় পরপর চালাতে পারি।

এর মধ্যে সবচেয়ে বেশি ব্যবহৃত দু’টি ফাংশন হলো:

  • setTimeout()
  • setInterval()

🕐 setTimeout() – নির্দিষ্ট সময় পরে একবার কোড চালানো

🧠 সংজ্ঞা:

setTimeout() একটি JavaScript built-in ফাংশন যা একটি নির্দিষ্ট সময় (delay) পরে একটি ফাংশন একবার চালায়।

📦 Syntax:

setTimeout(callbackFunction, delayInMilliseconds, arg1, arg2, ...);
  • callbackFunction → যেটা delay শেষ হলে চালানো হবে
  • delayInMilliseconds → কত মিলিসেকেন্ড পরে চালাবে

✅ উদাহরণ:

setTimeout(() => {
  console.log("Hello after 2 seconds");
}, 2000);

🔍 Output:

(wait 2 seconds...)
Hello after 2 seconds

⏸️ Clear Timeout:

const timer = setTimeout(() => {
  console.log("This will not run");
}, 3000);

clearTimeout(timer); // এই লাইনে টাইমার cancel হয়ে যাবে

🔁 setInterval() – নির্দিষ্ট সময় পরপর কোড চালানো

🧠 সংজ্ঞা:

setInterval() একটি JavaScript ফাংশন যা নির্দিষ্ট সময় পরপর একই ফাংশন বারবার চালায়, যতক্ষণ না সেটাকে clearInterval() দিয়ে থামানো হয়।

📦 Syntax:

setInterval(callbackFunction, intervalInMilliseconds, arg1, arg2, ...);

✅ উদাহরণ:

setInterval(() => {
  console.log("This prints every 1 second");
}, 1000);

🔁 Output:

This prints every 1 second
This prints every 1 second
... (infinite unless stopped)

🛑 Clear Interval:

const intervalId = setInterval(() => {
  console.log("Repeating...");
}, 1000);

setTimeout(() => {
  clearInterval(intervalId); // 5 সেকেন্ড পর বন্ধ করে দিচ্ছে
}, 5000);

⚖️ পার্থক্য: setTimeout vs setInterval

বৈশিষ্ট্য setTimeout() setInterval()
কাজ নির্দিষ্ট সময় পরে একবার ফাংশন চালায় নির্দিষ্ট সময় পরপর বারবার চালায়
বারবার চলে কিনা ❌ না, একবারই চলে ✅ হ্যাঁ, যতক্ষণ না বন্ধ করা হয়
থামানো যায় কিনা clearTimeout(id) clearInterval(id)
ব্যবহার Delay-based কাজ (e.g. popup delay) Timer, auto-save, animation repeat ইত্যাদি

🧠 কোথায় কোনটা ব্যবহার উপযোগী?

Use Case Use
Notification বা popup ২ সেকেন্ড পর setTimeout()
Clock, Stopwatch, Animation loop setInterval()
Debouncing, lazy loading setTimeout()
Periodic API Polling setInterval()

🧪 Practical Example: Timer with setInterval

let seconds = 0;
const timer = setInterval(() => {
  seconds++;
  console.log("Elapsed:", seconds);
  if (seconds === 5) {
    clearInterval(timer);
    console.log("Timer stopped.");
  }
}, 1000);

🟢 Output:

Elapsed: 1
Elapsed: 2
Elapsed: 3
Elapsed: 4
Elapsed: 5
Timer stopped.

🔚 উপসংহার:

  • setTimeout একবার নির্দিষ্ট সময় পরে কোড চালাতে ভালো
  • setInterval বারবার নির্দিষ্ট সময় পরপর চালাতে উপযোগী
  • এই দুইটি JS এর asynchronous behavior-এর গুরুত্বপূর্ণ অংশ