Javascript 每分钟运行一次异步函数

Javascript 每分钟运行一次异步函数,javascript,cocos2d-js,Javascript,Cocos2d Js,我计划每分钟从服务器上获取一次数据。但是,如果我运行这段代码,就会重复调用此函数。另一方面,如果我在条件中添加了date.getmillizes==0,它将不会处理任何结果。 对于如何每1分钟运行一次该功能,您有什么建议吗 async update() { var date = new Date(); if (date.getSeconds() == 0) { var newdata = await getData(1); array.shift(); array.push

我计划每分钟从服务器上获取一次数据。但是,如果我运行这段代码,就会重复调用此函数。另一方面,如果我在条件中添加了
date.getmillizes==0
,它将不会处理任何结果。 对于如何每1分钟运行一次该功能,您有什么建议吗

async update() {
 var date = new Date();
 if (date.getSeconds() == 0) {
   var newdata = await getData(1);
   array.shift();
   array.push(newdata); 
  }
}

由于您似乎无法很好地控制何时调用
update
,因此一个选项是每次
getSeconds()==0
(否则将其设置为
false
),然后仅在标记为
false
getSeconds()==0时运行实际代码:

let hasRun = false;
// ...
async update() {
 var date = new Date();
 const secs = date.getSeconds();
 if (secs !== 0) {
   hasRun = false;
 } else if (secs === 0 && hasRun === false) {
   hasRun = true;
   // your code
   var newdata = await getData(1);
   array.shift();
   array.push(newdata); 
  }
}
由于不在每帧创建
Date
s,可能需要较少资源的另一种选择是使用单独的函数切换布尔值,设置为每60秒运行一次的
setInterval
,不涉及
Date
s:

let hasRun = false;
setInterval(() => hasRun = false, 60000);
async update() {
  if (hasRun) return;
  hasRun = true;
  // your code
}

(当然,您也可以尝试
setInterval(update,60000)
如果框架允许)

当前调用
update
的频率是多少?(你能做一下
setInterval(update,60000)
?)查找
setInterval
,告诉我们这是否解决了你的问题。@CertainPerformance
update
函数是cocos提供的生命周期回调函数。它每一帧(以毫秒为单位)运行一次。Lodash有一些很好的方法来处理这样的事情。我想
update
可以通过setInterval调用,为什么不只是setInterval呢?