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

hfsqlsce  于 2021-10-10  发布在  Java
关注(0)|答案(1)|浏览(387)

关闭。这个问题需要详细或明确。它目前不接受答案。
**想改进这个问题吗?**编辑这篇文章,添加细节并澄清问题。

昨天关门了。
改进这个问题
我在api中有一个时间表选项,就像我在expressjs和nodejs中所做的那样。我们的后端使用两个参数(userid和timestamp)调用这个api。目标是在指定时间(…或几分钟后)删除用户信息(文件夹、文档等)。时间戳可以是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);
8gsdolmq

8gsdolmq1#

您可以使用节点计划包,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');
});

相关问题