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
,告诉我们这是否解决了你的问题。@CertainPerformanceupdate
函数是cocos提供的生命周期回调函数。它每一帧(以毫秒为单位)运行一次。Lodash有一些很好的方法来处理这样的事情。我想update
可以通过setInterval调用,为什么不只是setInterval呢?