Я пытаюсь найти элегантную реализацию для функции async
, которая пытается выполнить операцию проверки check()
каждые t
секунды в течение максимального n
числа раз;т.е. я хотел бы немедленно вернуться, если check() === true
, в противном случае я бы хотел выручить после t * n
секунд (n
попыток).
У меня есть рабочая реализация, использующая счетчик for-loop ипростая задержка:
// doc and pair are defined already
let delay = ms => new Promise(res => setTimeout(res, ms))
for (i = 0; i < 10; i++) {
if (doc.key) {
break
}
await delay(1000)
doc = await DbModel.findOne(pair)
}
Есть ли лучший способ добиться этого, используя встроенные функции es6 (например, возможно, обещанные версии setTimeout
и setInterval
)?