for (let i = 0; i < 10; i++) {
const promise = new Promise((resolve, reject) => {
const timeout = Math.random() * 1000;
setTimeout(() => {
console.log(i);
}, timeout);
});
// TODO: Chain this promise to the previous one (maybe without having it running?)
}
The above will give the following random output:
6
9
4
8
5
1
7
2
3
0
The task is simple: Make sure each promise runs only after the other one (.then()
).
For some reason, I couldn’t find a way to do it.
I tried generator functions (yield
), tried simple functions that return a promise, but at the end of the day it always comes down to the same problem: The loop is synchronous.
With async I’d simply use async.series()
.
How do you solve it?