Когда я запускаю следующий код:
b = async attempt => {
if (attempt == 5) {
return;
}
console.log("Starting attempt:", attempt);
b(attempt + 1).then(() => {
console.log("Finished attempt:", attempt);
});
};
b(0);
Вывод:
Starting attempt: 0
Starting attempt: 1
Starting attempt: 2
Starting attempt: 3
Starting attempt: 4
Finished attempt: 4
Finished attempt: 3
Finished attempt: 2
Finished attempt: 1
Finished attempt: 0
Однако я хочу вызывать еще одно обещание a
перед каждым рекурсивным вызовом следующим образом:
a = Promise.resolve();
b = async attempt => {
if (attempt == 5) {
return;
}
console.log("Starting attempt:", attempt);
a.then(() => {
b(attempt + 1);
}).then(() => {
console.log("Finished attempt:", attempt);
});
};
b(0);
Теперь вывод:
Starting attempt: 0
Starting attempt: 1
Starting attempt: 2
Finished attempt: 0
Starting attempt: 3
Finished attempt: 1
Starting attempt: 4
Finished attempt: 2
Finished attempt: 3
Finished attempt: 4
Как я могу изменить второй блок кода, чтобы убедиться, что вывод совпадает с первым блоком кода?