2 回答
TA贡献1801条经验 获得超16个赞
我认为setTimeout在这种情况下这将是一个更好的选择:
async function update() {
const t1 = new Date();
await wait_for_response();
setTimeout(update, Math.max(0, 1000 - new Date + t1));
}
update();
TA贡献1883条经验 获得超3个赞
这个使用承诺链的简单构造可以为您处理:
let lastPromise = Promise.resolve();
function update() {
lastPromise = lastPromise.then(wait_for_response, wait_for_response);
}
setInterval(update, 1000);
如果我们担心链无限增长,我们可以使用这个版本:
let lastPromise = Promise.resolve();
function update() {
const p = lastPromise;
function cleanup() {
if (lastPromise === p) {
lastPromise = Promise.resolve();
}
}
lastPromise = lastPromise
.then(wait_for_response, wait_for_response)
.then(cleanup, cleanup);
}
setInterval(update, 1000);
添加回答
举报