Я пытаюсь создать цепочку обещаний, в которой каждое обещание ожидает выполнения предыдущего обещания, прежде чем его выполнить.
const syncStatusChanges = () => {
return new Promise((resolve, reject) => {
console.log("in")
setTimeout(() => {
console.log("done")
resolve({ done: true })
}, 2000);
});
}
const run = () => {
const promises = [syncStatusChanges(), syncStatusChanges()]
promises[0].then(res => {
console.log("done 1")
promises[1].then(res => {
console.log("done 2")
})
})
}
run()
В этом примере вывод:
in
in
done
done 1
done
done 2
Но я хочу, чтобы это было:
in
done
done 1
in
done
done 2
Я также хочу это работать для любого числа функций. Я видел этот ответ, но результат тот же!
var promise = statusChangeCalls[0];
for (var i = 1; i < statusChangeCalls.length; i++)
promise = promise.then(statusChangeCalls[i]);