nodejs es6 способ выполнения задачи каждую секунду в течение 10 секунд - PullRequest
0 голосов
/ 13 октября 2018

Я пытаюсь найти элегантную реализацию для функции 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)?

1 Ответ

0 голосов
/ 13 октября 2018

Вы можете попробовать node-scheduer .Очень похоже на cronjob.Но приложение должно оставаться в рабочем состоянии.

Оно выполняет событие с заданным интервалом.Убедитесь, что задание выполняется каждый раз после требуемого интервала, и поместите туда повторяющиеся функции.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...