csl*_*rnr 5 javascript cron node.js async-await
我想安排一个异步函数(async/await ruturn 类型)每两分钟运行一次。
我尝试使用通用setInterval节点模块,如node-schedule 、 cron、 node-cron、 async-poll但无法实现对异步函数调用的轮询。
这是我在代码中尝试的:
cron.schedule("*/2 * * * *", await this.servicesManager.startPoll() => {
console.log('running on every two minutes');
}); // this is not working breaks after first run
const job = schedule.scheduleJob(" */1 * * * *", async function() {
try {
return await this.ServicesManager.startPoll(); // this function startPoll is undefined when using this
} catch (e) {
console.log(e);
}
console.log('Run on every minute');
});
const event = schedule.scheduleJob("*/2 * * * *", this.ServicesManager.startPoll()); //using node-schedule , breaks after first time
cron.schedule("*/2 * * * *", await this.ServicesManager.startPoll()); // using cron same result as using node-schedule
return await this.ServicesManager.startPoll(); // without polling works
Run Code Online (Sandbox Code Playgroud)
尝试这样的事情
// version 1
cron.schedule("*/2 * * * *", this.servicesManager.startPoll);
// version 2 => if servicesManager needs its `this` reference
cron.schedule("*/2 * * * *", async () => this.servicesManager.startPoll());
//version 3 ==> using node-schedule
schedule.scheduleJob("*/1 * * * *", async () => this.ServicesManager.startPoll());
Run Code Online (Sandbox Code Playgroud)
我不知道你的servicesManager,你可能必须使用上面的“版本 2”才能让它工作。
schedule 库需要一个函数来执行,但在上面的例子中它们得到了一个已解决的 Promise。
| 归档时间: |
|
| 查看次数: |
7913 次 |
| 最近记录: |