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

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

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

昨天关门了。
改进这个问题
我在api中有一个时间表选项,就像我在expressjs和nodejs中所做的那样。我们的后端使用两个参数(userid和timestamp)调用这个api。目标是在指定时间(…或几分钟后)删除用户信息(文件夹、文档等)。时间戳可以是5分钟到2天。
当它发生时,作业已经完成,api正在等待另一个调用。api每天可以接收1000个调用,因此性能非常重要。将来运行函数的最佳方式是什么?

  1. async function scheduledAction(userId, timestamp) {
  2. var actionInFuture = await checkDate(timestamp);
  3. if(actionInFuture) {
  4. console.log('Action triggered');
  5. }
  6. }
  7. async function checkDate(timestamp) {
  8. await new Promise(resolve => {
  9. setTimeout(resolve, 1000)
  10. });
  11. // timestamp = 1627311533000
  12. if(Date.now() >= timestamp) {
  13. return true;
  14. } else {
  15. return checkDate(timestamp);
  16. }
  17. }
  18. app.get('/action', (req, res) => {
  19. scheduledAction(req.query.userId, req.query.timestamp);
  20. }
  21. scheduledAction(req.query.userId, req.query.timestamp);
8gsdolmq

8gsdolmq1#

您可以使用节点计划包,https://www.npmjs.com/package/node-schedule
例如:

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

相关问题