gpt4 book ai didi

javascript - 每分钟运行一次异步函数

转载 作者:行者123 更新时间:2023-12-03 00:42:35 25 4
gpt4 key购买 nike

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

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

最佳答案

因为看起来您无法很好地控制何时 update被调用时,一种选择是将 bool 值设置为 true每次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,可能需要更少资源的替代方案每个帧都有一个单独的函数来切换 bool 值,用 setInterval 设置每 60 秒运行一次,否 Date涉及:

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

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

关于javascript - 每分钟运行一次异步函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53387046/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com