Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • JavaScript Documentation48টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • JavaScript কী?
  • Syntax & Comments
  • Variables
  • Data Types: Basics
  • Data Types: Conversion
  • Data Types: Advanced
  • Strings
  • Numbers & Math
  • Date & Time
  • Operators
  • Conditions
  • Loops
  • Functions: Basics
  • Functions: Intermediate
  • Functions: Advanced
  • Scope & Hoisting
  • Closures & this
  • ES6+ Modern
  • Arrays: Basics
  • Arrays: Intermediate
  • Arrays: Advanced
  • Objects: Basics
  • Objects: Intermediate
  • Objects: Advanced
  • Class: Basics
  • Class: Intermediate
  • Class: Advanced
  • DOM: Basics
  • DOM: Intermediate
  • DOM: Advanced
  • Events: Basics
  • Events: Intermediate
  • Events: Advanced
  • Async JavaScript
  • Promise
  • Async / Await
  • Fetch API
  • JSON
  • Modules
  • Browser Storage
  • Event Loop Deep
  • Prototype Chain
  • Iterators & Generators
  • WeakMap, WeakSet, Proxy
  • Error Handling
  • Practice Problems
  • Mini Projects
  • Basics
  • Functions & Scope
  • Types & Syntax
  • Arrays & Objects
  • Advanced
  • Functional Programming
  • Objects & Symbols
  • Async Deep Dive
  • Modern JavaScript
  1. Docs
  2. JavaScript
  3. প্রশ্ন/উত্তর
  4. Async Deep Dive
  5. Q41. What is the difference between setTimeout(), setInterval(), and requestAnimationFrame()?
JavaScriptAsync Deep Dive

Q41. What is the difference between setTimeout(), setInterval(), and requestAnimationFrame()?

তিনটি সময়-নির্ভর method-এর সময়, ব্যবহার ও সঠিক প্রয়োগ।

তিনটোই সময় বিলম্ব করে কাজ চালায়, কিন্তু কাজটা আলাদা। setTimeout একবার পরে চলে, setInterval বারবার চলে, আর requestAnimationFrame ব্রাউজারের প্রতিটি repaint-এর সঙ্গে সিঙ্ক করে চলে — এটি শুধু animation বা graphics-এর জন্য।

তিনটির পার্থক্যjavascript
javascript
// setTimeout — একবার মাত্র
setTimeout(() => {
  console.log("২ সেকেন্ড পর একবার");
}, 2000);

// setInterval — বারবার
let count = 0;
const id = setInterval(() => {
  count++;
  console.log("প্রতি ১ সেকেন্ডে:", count);

  if (count === 3) {
    clearInterval(id); // থামাতে হলে অবশ্যই বন্ধ করতে হবে
  }
}, 1000);

// requestAnimationFrame — repaint অনুযায়ী
const box = document.getElementById("box");
let x = 0;

function animate() {
  x += 2;
  box.style.transform = `translateX(${x}px)`;

  if (x < 200) {
    requestAnimationFrame(animate);
  }
}

requestAnimationFrame(animate);

setTimeout শুধু একবার কাজ করে এবং setInterval চলতে থাকে। requestAnimationFrame চালানোর পর নিজেই নতুন করে callback রেজিস্টার করতে হয়, তাই animation বন্ধ করতে চাইলে আর frame request না দিয়ে শুধু ফাংশন ডাকা বন্ধ করলেই হয়।

সবচেয়ে গুরুত্বপূর্ণ পার্থক্য হলো নির্ভুলতা — setTimeout সঠিক সময়ে আসে এমন নিশ্চয়তা দেয় না, কারণ event loop-এ অন্য কাজ জড়িয়ে থাকলে সে দেরি করতে পারে।

সময় নিয়ে ভুল ধারণাjavascript
javascript
// খারাপ উদাহরণ — প্রতি টাইপে অপেক্ষা করা
function search() {
  const term = input.value;

  setTimeout(() => {
    const results = searchDatabase(term); // ধীর কাজ
    render(results);
  }, 300);
}

// ভালো উদাহরণ — কাজ শেষ হওয়ার পর পরেরটা শুরু
function search2() {
  const term = input.value;

  fetchResults(term).then((results) => {
    setTimeout(() => {
      render(results);
    }, 300);
  });
}

graphics বা animation-এ setInterval ব্যবহার করলে চওড়া ঝাপটানো লাগতে পারে, কারণ repaint সবসময় ৬০fps-এ হয় না। তখন requestAnimationFrame ব্রাউজারের সঙ্গে সিঙ্ক করে সবসময় সঠিক সময়ে ছবি আঁকে।

repaint এর সাথে সিঙ্কjavascript
javascript
// 60fps হলে প্রতি ফ্রেমে 5px, মোট 20 ফ্রেম = প্রায় 333ms
let x = 0;

function move() {
  x += 5;
  element.style.transform = `translateX(${x}px)`;

  if (x < 100) requestAnimationFrame(move);
}

requestAnimationFrame(move);
বিষয়setTimeoutsetIntervalrequestAnimationFrame
কতবার চলেএকবারবারবারপ্রতিটি repaint-এ
শুধু browser-এনয়নয়হ্যাঁ
নিজে থেকে থামেনাclearInterval দরকারডাকা বন্ধ করলেই থামে
সেরা ব্যবহারনির্দিষ্ট সময় পরেপুনরাবৃত্তিanimation ও graphics
মনে রাখুন

setTimeout বা setInterval দিয়ে কখনোই animation করবেন না — repaint-এর সঙ্গে সিঙ্ক না থাকায় ছবি কাঁপবে বা ধীর দেখাবে। আর setInterval ব্যবহার করলে clearInterval দিয়ে বন্ধ করার কথা ভুলবেন না, নয়তো page বন্ধ না হওয়া পর্যন্ত কাজ চলতে থাকবে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
Async Deep Dive বিভাগের আরও প্রশ্নJavaScript প্রশ্ন/উত্তর
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com