首页 > 解决方案 > 分步设置间隔 - 每一步都应该更长

问题描述

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

  1. 1s后检查
  2. 1 + 2s = 3s 后的下一次检查
  3. 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);

标签: javascriptsetinterval

解决方案


您应该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)在该函数表达式之外的任何时候使用它很方便。


推荐阅读