javascript - setTimeout 和 setInterval 不起作用

标签 javascript jquery

我希望能够每 6 秒调用函数 work()。我的 jQuery 代码是

function looper(){
  // do something
  if (loopcheck) {           
    setInterval(work,6000);
    }
  else {
    console.log('looper stopped');
  }
}

我遇到的问题是它快速循环两次工作,然后等待 6 秒。我尝试使用 setTimeout 得到类似的结果。

什么可能导致工作在延迟工作之前被调用两次?

最佳答案

设置间隔 should be avoided .如果您希望每 6 秒重复调用一次工作,请考虑改为递归调用 setTimeout

function loopWork(){
    setTimeout(function () {
        work();
        loopWork();
    }, 6000);
}

然后

function looper(){
  // do something
  if (loopcheck) {           
    loopWork()
  }
  else {
    console.log('looper stopped');
  }
}

当然,如果你想停止它,你会保存最后一次调用 setTimeout 的值,并将其传递给 clearTimeout

var timeoutId;
timeoutId = setTimeout(function () {
    work();
    loopWork();
}, 6000);

然后停止它

clearTimeout(timeoutId);

关于javascript - setTimeout 和 setInterval 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8695418/

相关文章:

javascript - 为什么我的三 Angular 条纹要和之前的三 Angular 条纹连接起来

javascript - 如何仅在一个div Angular 2中运行函数

javascript - jQuery Mobile ListView 中的响应式图像

javascript - 单击浏览器后退按钮时隐藏加载 gif?

javascript - 如何在 javascript 中插入带有 innerHTML 的 php 数组

javascript - 如何使用 yyyymmdd 格式向日期添加 n 天但排除星期日?

javascript - 在 jquery 中打开对话框而不是警报/提示

javascript - Angular 中的自定义自动滚动顶部指令

javascript - 单击时无法打开移动菜单...

javascript - 立体图的插值