Вам не нужно делать ничего особенного -
const aaa = async n =>
n < 100
? driver (n) .then (aaa)
: n
const driver = async n =>
n + 1
aaa (0) .then
( res => console .log ("res", res)
, err => console .error ("err", err)
)
// res 100
Выше функции async
гарантированно возвращают Обещание.Но если вы не верите мне, что это все еще работает, вот некоторые дополнительные доказательства: D
const aaa = async n =>
{ if (n >= 100)
return n
else if (n % 10 === 0)
return status (n) .then (driver) .then (aaa)
else
return driver (n) .then (aaa)
}
const driver = async n =>
new Promise (r => setTimeout (r, 15, n + 1)) // simulate 15ms delay
const status = async n =>
{ console .log ("progress: %d%", n)
return n
}
aaa (0) .then
( res => console .log ("res", res)
, err => console .error ("err", err)
)
Выход
progress: 0%
progress: 10%
progress: 20%
progress: 30%
progress: 40%
progress: 50%
progress: 60%
progress: 70%
progress: 80%
progress: 90%
res 100