我如何在未来的某个特定点运行函数?



我在我的API中有一个我用Expressjs和NodeJS做的计划选项。我们的后端使用两个参数(userID &时间戳)。目标是在指定时间(..)删除用户信息(文件夹、文档等)。或者几分钟后)。时间戳可以是5分钟到2天。

当它发生时,任务完成,API正在等待另一个调用。API每天可以接收1000个调用,因此性能非常重要。将来运行这个函数的最佳方式是什么?

async function scheduledAction(userId, timestamp) {
var actionInFuture = await checkDate(timestamp);

if(actionInFuture) {
console.log('Action triggered');
}
}
async function checkDate(timestamp) {
await new Promise(resolve => {
setTimeout(resolve, 1000)
});

// timestamp = 1627311533000
if(Date.now() >= timestamp) {
return true;
} else {
return checkDate(timestamp);
}
}
app.get('/action', (req, res) => {
scheduledAction(req.query.userId, req.query.timestamp);
} 
scheduledAction(req.query.userId, req.query.timestamp);

您可以使用节点调度包,https://www.npmjs.com/package/node-schedule

例如:

var schedule = require('node-schedule');
const date = new Date(1627309531*1000);
var j = schedule.scheduleJob(date, function(){
console.log('Action triggered');
});

最新更新