what is promises in Javascript?
JavaScript is synchronous by default, which means code executes in a linear, line-by-line manner. Each statement waits for the previous statement to finish before executing.
However, some operations like:
API calls
Database queries
File reading
Timers (setTimeout)
take time to complete. If JavaScript waited for these operations synchronously, the entire program would pause and become slow or unresponsive.
To avoid blocking execution, JavaScript supports asynchronous programming.
A Promise is an object that represents the eventual completion or failure of an asynchronous operation. Promises allow JavaScript to continue executing other code while waiting for long-running tasks to finish.
Promises have three states:
Pending = operation is still running
Resolved = operation completed successfully
Rejected = operation failed
Why Promises?
Callback functions also help perform asynchronous operations in JavaScript.
A callback function is a function passed as an argument to another function and executed later, usually after an asynchronous task completes.
Before Promises were introduced, callbacks were commonly used for handling asynchronous tasks
However, when multiple asynchronous operations depend on each other, callbacks become deeply nested, leading to a problem called Callback Hell.
function analyse(callback) {
setTimeout(() => {
console.log("done analysis");
callback();
}, 2000);
}
function design(callback) {
setTimeout(() => {
console.log("done design");
callback();
}, 1000);
}
function develop(callback) {
setTimeout(() => {
console.log("done development");
callback();
}, 3000);
}
function test(callback) {
setTimeout(() => {
console.log("done testing");
callback();
}, 2000);
}
function deploy(callback) {
setTimeout(() => {
console.log("done deployment");
callback();
}, 1000);
}
to execute in order this is how callback functions are called and thus resulting in callback hell
analyse(() => {
design(() => {
develop(() => {
test(() => {
deploy(() => {
console.log("SDLC completed");
});
});
});
});
});
Problems with callback hell:
- Code becomes difficult to read
- Hard to maintain
- Error handling becomes complicated
- Debugging becomes difficult
To solve this issue, JavaScript introduced:
Promises
Async/Await (TBD)
let's see how to reslove the callback hell with promises
CODE:
function analyse() {
return new Promise((res, rej) => {
setTimeout(() => {
console.log("done analysis");
res();
}, 2000);
});
}
function design(){
return new Promise ((res,rej)=>{
setTimeout(()=> {
console.log("done design")
res();
},1000);
})
}
function develope(){
return new Promise ((res,rej)=>{
setTimeout(()=> {
console.log("done development")
res();
},3000);
})
}
function test(){
return new Promise ((res,rej)=>{
setTimeout(()=> {
console.log("done testing")
res();
},2000);
})
}
function deploy(){
return new Promise ((res,rej)=>{
setTimeout(()=> {
console.log("done deployment")
res();
},1000);
})
}
function sdlc(){
analyse().then(()=>design())
.then(()=>develope())
.then(()=>test())
.then(()=>deploy())
.then(()=>console.log("SLDC Completed"))
}
sdlc();
OUTPUT:
United States
NORTH AMERICA
Related News
What Does "Building in Public" Actually Mean in 2026?
20h ago
The Agentic Headless Backend: What Vibe Coders Still Need After the UI Is Done
20h ago
Why Iβm Still Learning to Code Even With AI
22h ago
I gave Claude a persistent memory for $0/month using Cloudflare
1d ago
NYT: 'Meta's Embrace of AI Is Making Its Employees Miserable'
1d ago

