每分钟运行一次异步功能

时间:2018-11-20 05:56:24

标签: javascript cocos2d-js

我打算每分钟从服务器获取数据。但是,如果我运行此代码,则会重复调用此函数。另一方面,如果我在条件中添加了date.getMilliseconds == 0,它将不会处理任何结果。 您是否对每1分钟运行一次功能有任何建议?

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

1 个答案:

答案 0 :(得分:1)

由于似乎您无法精确控制何时调用update,因此一种选择是每次true都将布尔值设置为getSeconds() === 0(将其设置为{ {1}}除外),然后仅在标志为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); } } 而可能需要较少资源的替代方法是具有一个 separate 函数来切换布尔值,并设置一个Date每60秒运行一次,不涉及setInterval

Date

(当然,如果框架允许,您也可以尝试let hasRun = false; setInterval(() => hasRun = false, 60000); async update() { if (hasRun) return; hasRun = true; // your code }