按步骤设置间隔 - 每一步都应该更长



我要实现的是设置间隔并检查条件 - 第一次在一秒后,第二次 - 3 秒后,第三次 - 5 秒后,依此类推

  1. 1秒后检查
  2. 1 + 2s = 3s 后的下一次检查
  3. 1 + 2s
  4. + 2s = 5s 后的下一次检查

如何实现这样的事情?

const interval = setInterval(() => {
const params = new URLSearchParams(externalWindow.location.href);
const code = params.get('code');
if (code) {
clearInterval(interval);
externalWindow.close();
}
}, 1000);

您应该改用setTimeout,每次+= 2000初始延迟递增。

let timeout = setTimeout(
function check(delay) {
const params = new URLSearchParams(externalWindow.location.href);
const code = params.get('code');
if (code)
externalWindow.close();
else {
delay += 2000;
timeout = setTimeout(check, delay, delay);
}
},
1000,
1000
);

您并不严格需要那里的timeout变量,但如果您想在该函数表达式之外的任何点clearTimeout(timeout),它会很方便。

你能告诉我我的代码有什么问题吗?

checkCode = (externalWindow) => {
let retry = true;
const params = new URLSearchParams(externalWindow.location.href);
const code = params.get('code');
if(code){
console.log('code and stop loop');
retry = false;
}
if (retry){
console.log('retry');
setTimeout(() => this.checkCode(externalWindow), 2000);
}
}

它只执行一次

最新更新