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?)
}
Вышеприведенный случай дает следующий случайный вывод:
6
9
4
8
5
1
7
2
3
0
Задача проста: убедитесь, что каждое обещание выполняется только после другого (.then()
).
По какой-то причине я не смог найти способ сделать это.
Я попробовал функции генератора (yield
), попробовал простые функции, которые возвращают обещание, но в конце дня всегда сводится к одной и той же проблеме: Цикл является синхронным.
С async Я бы просто использовал async.series()
.
Как вы его решаете?