Execution Stack
(Call Stack)
A JavaScript engine – V8 – is a program or interpreter that executes JavaScript code. It is used in Chrome and Node.js.




Job Queue
promise chain
CallBack Queue
setTimeOut, setInterval, eventListerner
// Sync
function f1( ) {
console.log('One')
}
function f2( ) {
console.log('Two')
f1( );
}
function f3( ) {
console.log('Three')
f2( );
}
// Invoke
f3( );
//Output: Three Two One
// Async
function f1(){
console.log("Hello")
}
function f2(){
console.log("Goodbye")
setTimeout(f1, 0); //callback
}
function f3(){
let x = new Promise((resolve, reject) => {
resolve("Thanks");
reject("Error");
})
// Comsumer .then
x.then(result => console.log(result), error => console.log(error) );
f2();
return x;
}
// Invoke
f3();
//Output: Goodbye Thanks Hello
function f1() {
console.log('One');
}
function f2() {
console.log('Two');
setTimeout(f1, 1000); // This will call f1 after 1 second
}
function f3() {
new Promise((res, rej) => {
res('Three');
// No need for rej here since the promise is always resolved
})
.then(x => { console.log(x); })
.catch(e => { console.log(e); });
}
f2();
f3();
//Output: Two Three One
function f1() {
console.log("Hello!");
}
function f2() {
setTimeout((f2)=>{console.log("Goodbye!");}, 1000)
f1();
};
function f3() {
f2();
new Promise((resolve, reject)=>{
let x = false;
if(x){
resolve("Thank you!")
}else {
reject("Error")
}
})
.then((message) => {console.log(message)})
.catch((error) => {console.log(error)})
.finally(()=> {console.log("See you again!")})
}
f3();
//Output: Hello Error See you again! Goodbye!
function createPromise(message) {
return new Promise((resolve, reject) => {
resolve(message);
})
.then(result => {
console.log(result);
})
.catch(error => {
console.log(error);
});
}
function f1(){
createPromise("Hello");
}
function f2(){
createPromise("Goodbye");
setTimeout(f1, 0);
}
function f3(){
createPromise("Thanks");
f2();
}
f3();
//Output: Thanks Goodbye Hello
function selectFruit(callback) {
setTimeout(() => {
console.log("Selected fruit");
callback();
}, 1000);
}
function chopFruit(callback) {
setTimeout(() => {
console.log("Chopped fruit");
callback();
}, 1000);
}
function processOrder() {
selectFruit(() => {
chopFruit(() => {
console.log("Order processed");
});
});
}
processOrder();
//Output: Selected Fruit,
// Chopped Fruit, Order Processed
function selectFruit() {
return new Promise((resolve) => {
setTimeout(() => {
console.log("Selected fruit");
resolve();
}, 1000);
});
}
function chopFruit() {
return new Promise((resolve) => {
setTimeout(() => {
console.log("Chopped fruit");
resolve();
}, 1000);
});
}
function processOrder() {
selectFruit()
.then(chopFruit)
.then(() => {
console.log("Order processed");
})
.catch((error) => {
console.log("Error:", error);
});
}
processOrder();
//Output: Selected Fruit,
// Chopped Fruit, Order Processed
function selectFruit() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Selected fruit");
resolve();
}, 1000);
});
}
function chopFruit() {
return new Promise((resolve, reject) => {
setTimeout(() => {
console.log("Chopped fruit");
// Example of an error condition
reject("Error in chopping fruit");
}, 1000);
});
}
function processOrder() {
selectFruit()
.then(chopFruit)
.then(() => {
console.log("Order processed");
})
.catch((error) => {
console.log("Error:", error);
});
}
processOrder();
//Output: Selected Fruit,
// Chopped Fruit, Error