I'm trying to chain a sequence of Promise
s so that the second promise will start after the first one resolves and so on. I don't understand how I cannot get it to work correctly.
Here is my demo code:
const promise1 = new Promise((resolve, reject) => { setTimeout(resolve, 5000, 'a'); });
const promise2 = new Promise((resolve, reject) => { setTimeout(resolve, 5000, 'b'); });
const promise3 = new Promise((resolve, reject) => { setTimeout(resolve, 5000, 'c'); });
promise1.then(val => {
console.log('promise 1', val);
promise2.then(val2 => {
console.log('promise 2', val2);
promise3.then(val3 => {
console.log('promise 3', val3);
});
});
});
So what I expected from this code goes like this:
--- 5 seconds passes ---
// console outputs: 'promise 1a'
--- 5 seconds passes ---
// console outputs: 'promise 2b'
--- 5 seconds passes ---
// console outputs: 'promise 3c'
But instead what happens:
--- 5 seconds passes ---
// console outputs: 'promise 1a'
// console outputs: 'promise 2b'
// console outputs: 'promise 3c'
Why is this so? Why are all three promises triggered at the same time?