javascript - 分步设置间隔 - 每一步都应该更长
问题描述
我想要实现的是设置间隔并检查条件 - 第一次在一秒后,第二次 - 在 3 秒后,第三次 - 在 5 秒后等等
- 1s后检查
- 1 + 2s = 3s 后的下一次检查
- 1 + 2s + 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)
在该函数表达式之外的任何时候使用它很方便。
推荐阅读
- c# - Task.WaitAll() 丢失结果不等到实际完成
- python - 如何根据 timedelta 计算特定值的出现
- vim - Vim 缩进配置
- flutter - flutter + firebase无密码电子邮件登录-动态链接数据返回null
- validation - Apps 脚本中用于数据验证的控制消息框
- javascript - Vue路由器-如何根据用户角色在同一路由路径上加载多个组件?
- python - 尝试计算和打印整数时获取“int”对象不是可下标的错误
- ios - 如何使用 SquareAPI 成功地将信用卡信息传递给 heroku?获取 NSCocoaErrorDomain 问题代码 3840
- python - numpy 整数数组转换为 numpy 数组数组
- python - 如何在包内导入模块