我试图在预定时间运行 API 调用。我通过网站进行了研究,发现了这个来自 npmjs 的名为 node-schedule 的包。通过在需要的时间调用代码,这可以按预期工作。我遇到的问题是:
假设我有一个时间列表,例如:["10:00","11:00","13:00"]
一旦我启动服务器,它将在需要的时间执行。但是,如果我想动态更改时间列表怎么办?
正是我想要做的:
- 调用 API 并从数据库中获取时间
- 为这些时间中的每一个设置 cron-schedule。
- 动态添加新时间到数据库
我想要的:将这个新添加的时间动态添加到cron-schedule
index.js
const express = require('express');
const schedule = require('node-schedule');
const app = express();
const port = 5000;
var date = new Date(2019, 5, 04, 14, 05, 20);// API call here
var j = schedule.scheduleJob(date, function(){
console.log('The world is going to end today.');
});
app.get('/test', (req, res) => {
var date = new Date(2019, 5, 04, 14, 11, 0); // Will call API here
var q = schedule.scheduleJob(date, function(){
console.log('Hurray!!');
});
res.send('hello there');
});
app.listen(port, () => console.log(`Example app listening on port ${port}!`));
上面写的代码是我所拥有的,而且非常混乱。我在那里传达的是,在运行index.js
文件 API 时会调用并cron-schedule
执行。现在,如果有一些新值添加到数据库中,我想重新运行它。
重新运行index.js
是我的另一个选择,但我认为这不是正确的做法。我想到的下一个选项是调用/test
上面提到的另一个端点,它最终会再次运行 cron。
请让我知道一些建议或某种解决方案,以便我纠正我的错误。