Sunday, January 2, 2022

Promise chaining

Promise chaining means executing multiple asynchronous tasks one after another, where the result of one Promise is used in the next Promise.

Simple idea:

Task-1 finishes

Use result for Task-2

Task-2 finishes

Use result for Task-3

Example:

Get user from server

Using user id, get user orders

Using order id, get payment details

Step 1: Get User

function getUser() {
return new Promise((resolve, reject) => {
setTimeout(() => {
resolve({
id: 1,
name: "Lokman"
});
}, 1000);
});
}

This sends:

{ id: 1, name: "Lokman" }

Step 2: Get Orders using User ID

function getOrders(userId) {
return new Promise((resolve, reject) => {

setTimeout(() => {
resolve({
orderId: 101,
product: "Laptop"
});
}, 1000);
});
}

This sends:

{ orderId: 101, product: "Laptop" }

Step 3: Get Payment using Order ID

function getPayment(orderId) {
return new Promise((resolve, reject) => {

setTimeout(() => {
resolve("Payment successful");
}, 1000);
});
}

Promise Chain

getUser()
.then(user => {
console.log(user);
return getOrders(user.id); // return Promise 2
})
.then(order => {
console.log(order);
return getPayment(order.orderId); // return Promise 3
})
.then(payment => {
console.log(payment);
})
.catch(error => {
console.log(error);
});

No comments:

Post a Comment

Javascript module

JavaScript Modules (ES6) let you split code into multiple files and reuse code cleanly. Main keywords: export → make something available...