运行 异步函数每分钟一次
running async function once every minute
我打算每分钟从服务器获取一个数据。但是,如果我运行这段代码,这个函数就会被重复调用。另一方面,如果我在条件中添加 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
,因此一种选择是每次 getSeconds() === 0
时都将布尔值设置为 true
(设置它到 false
否则),然后只有 运行 当标志是 false
and getSeconds() === 0
:[=22= 时的真实代码]
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,所以有一个 separate 函数来切换布尔值,用 setInterval
每 60 秒 运行s,不涉及 Date
s:
let hasRun = false;
setInterval(() => hasRun = false, 60000);
async update() {
if (hasRun) return;
hasRun = true;
// your code
}
(当然如果框架允许也可以尝试setInterval(update, 60000)
)
我打算每分钟从服务器获取一个数据。但是,如果我运行这段代码,这个函数就会被重复调用。另一方面,如果我在条件中添加 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
,因此一种选择是每次 getSeconds() === 0
时都将布尔值设置为 true
(设置它到 false
否则),然后只有 运行 当标志是 false
and getSeconds() === 0
:[=22= 时的真实代码]
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,所以有一个 separate 函数来切换布尔值,用 setInterval
每 60 秒 运行s,不涉及 Date
s:
let hasRun = false;
setInterval(() => hasRun = false, 60000);
async update() {
if (hasRun) return;
hasRun = true;
// your code
}
(当然如果框架允许也可以尝试setInterval(update, 60000)
)