(API কল, ডিলে, এবং ফাইল লোডিংয়ের মতো অ্যাসিঙ্ক্রোনাস কাজ হ্যান্ডেল করা)
জাভাস্ক্রিপ্ট সিঙ্গেল-থ্রেডেড, অর্থাৎ এটি একবারে একটি কাজ চালায়।
কিন্তু বাস্তব-জগতের কাজ (যেমন ডেটা আনা বা টাইমারের জন্য অপেক্ষা করা) সময় নিতে পারে।
অ্যাসিঙ্ক্রোনাস প্রোগ্রামিং আপনার কোডকে ব্লক না করে চলতে দেয়।
function getData(callback) {
setTimeout(() => {
callback("Data loaded");
}, 1000);
}
getData((result) => {
console.log(result); // Data loaded
});⚠️ সমস্যা: Callback Hell — নেস্টেড কলব্যাক পড়া ও ডিবাগ করা কঠিন।
একটি Promise হলো একটি অবজেক্ট যা একটি অ্যাসিঙ্ক অপারেশনের ভবিষ্যৎ মান প্রতিনিধিত্ব করে।
const myPromise = new Promise((resolve, reject) => {
let success = true;
setTimeout(() => {
if (success) resolve("Success!");
else reject("Error occurred");
}, 1000);
});myPromise
.then((value) => {
console.log(value); // Success!
})
.catch((error) => {
console.error(error);
})
.finally(() => {
console.log("Promise completed");
});fetch("https://jsonplaceholder.typicode.com/posts/1")
.then((response) => response.json())
.then((data) => console.log(data))
.catch((err) => console.error(err));async একটি ফাংশনকে একটি promise রিটার্ন করায়।
await promise-টি resolve হওয়ার জন্য অপেক্ষা করে।
async function getPost() {
try {
const response = await fetch("https://jsonplaceholder.typicode.com/posts/1");
const data = await response.json();
console.log(data);
} catch (err) {
console.error("Error:", err);
}
}
getPost();.then() চেইনিং-এর চেয়ে এটি বেশি পঠনযোগ্য।
setTimeout(() => {
console.log("Runs after 2 seconds");
}, 2000);
let counter = 0;
const intervalId = setInterval(() => {
counter++;
console.log(counter);
if (counter === 3) clearInterval(intervalId);
}, 1000);const p1 = Promise.resolve("First");
const p2 = Promise.resolve("Second");
Promise.all([p1, p2]).then(values => console.log(values)); // [ "First", "Second" ]
Promise.race([p1, p2]).then(value => console.log(value)); // "First" (যেটি প্রথমে resolve হয়)async/await কোডকে পরিষ্কার ও পড়তে সহজ করে তোলে।catch() বা try...catch ব্যবহার করুন।Promise.all সব promise-এর জন্য অপেক্ষা করে; Promise.race প্রথমটি রিটার্ন করে।fetch() ব্যবহার করুন।await ব্যবহার করে।async/await-এর সাথে try...catch দিয়ে এরর ধরার চেষ্টা করুন।.then() মেথড চেইন করুন।