nodejs es6每秒运行任务的方式,持续10秒

时间:2018-10-13 00:21:16

标签: node.js ecmascript-6

我正在尝试为async函数提供一种优雅的实现,该函数每check()秒尝试一次检查操作t,最多n次;即,如果check() === true,我想立即返回,否则,我想在t * n秒(n次尝试)后纾困。

我有一个使用基于计数器的for循环和简单延迟的有效实现方式:

// 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功能(例如,setTimeoutsetInterval的允诺版本)实现此目的的更好方法?

1 个答案:

答案 0 :(得分:0)

您可以尝试node-scheduer。与cronjob非常相似。但是应用程序必须保持运行状态。

它以给定的间隔执行一个事件。确保每次在所需的时间间隔之后执行作业,然后在其中放置重复的功能。