JavaScript is single-threaded, meaning it can do only one thing at a time. Callbacks help JavaScript:
function greet(name, callback) {
console.log("Hello " + name);
callback();
}
function sayBye() {
console.log("Goodbye!");
}
greet("Alex", sayBye);
Hello Alex
Goodbye!
function calculate(a, b, callback) {
const result = a + b;
callback(result);
}
function display(result) {
console.log("Result:", result);
}
calculate(5, 10, display);
Result: 15
setTimeout(function () {
console.log("This runs after 2 seconds");
}, 2000);
document.getElementById("btn").addEventListener("click", function () {
alert("Button clicked!");
});
function fetchData(callback) {
setTimeout(() => {
callback("Data loaded successfully");
}, 1500);
}
fetchData(function (message) {
console.log(message);
});
Data loaded successfully
setTimeout(() => {
console.log("Step 1");
setTimeout(() => {
console.log("Step 2");
setTimeout(() => {
console.log("Step 3");
}, 1000);
}, 1000);
}, 1000);
| Feature | Callbacks | Promises / Async |
|---|---|---|
| Readability | Low (nested) | High |
| Error handling | Complex | Simple (catch) |
| Modern usage | Limited | Preferred |
| Control flow | Hard | Clean |