从超时内开始一个间隔是一个问题

时间:2015-03-12 14:23:37

标签: javascript

在我网站上的iframe中,我想运行一个轮询功能。我希望它在页面加载后运行800ms,然后每100ms运行一次。

我目前正在这样做,但想知道它是否会导致任何问题:

 window.setTimeout(function(){
            foo();
            window.setInterval(function(){
                foo();
            }, 100)
        }, 800);

1 个答案:

答案 0 :(得分:1)

所有setTimeout都执行指定延迟后包含的函数。它不会对您的setInterval电话产生任何影响。在setInterval中使用setTimeout之间的唯一区别是它只会在经过800毫秒延迟后触发。

如果您的foo功能设计为始终重复,则可以在该功能中添加第二个setTimeout

function foo() {
    window.setTimeout(foo, 100);
}

现在您需要做的就是在foo()内拨打setTimeout一次:

window.setTimeout(foo, 800);

这完全取决于个人偏好。显然,如果您的foo函数被设计为在其他地方调用,那么这种方法并不理想。


演示



var count = 0,
    elem = document.querySelector('p');

function foo() {
  elem.innerHTML = ++count;
  window.setTimeout(foo, 100);
}

window.setTimeout(foo, 800);

<p>Count will be displayed here after the 800ms timeout finishes...</p>
&#13;
&#13;
&#13;