Javascript 向循环添加超时

Javascript 向循环添加超时,javascript,loops,settimeout,Javascript,Loops,Settimeout,我有一个功能,当计时器达到5000ms时执行操作: var timer=新定时器(函数(){ 控制台日志(“刷新出价”); 刷新出价(); }, 5000); timer.pause(); 如果(IsElementViewPort()==真){ console.log(“视图中的元素”); timer.resume(); }否则{ timer.pause(); log(“元素不可见”) } //我尝试使用5000ms延迟循环5次-我使用的代码是: 对于(i=0;i也许您可以通过这种方式修改代码

我有一个功能,当计时器达到5000ms时执行操作:

var timer=新定时器(函数(){
控制台日志(“刷新出价”);
刷新出价();
}, 5000);
timer.pause();
如果(IsElementViewPort()==真){
console.log(“视图中的元素”);
timer.resume();
}否则{
timer.pause();
log(“元素不可见”)
}
//我尝试使用5000ms延迟循环5次-我使用的代码是:

对于(i=0;i也许您可以通过这种方式修改代码,以根据需要实现基于计时器的迭代:

//Track the current iteration
var i = 0;

function MyFunc() {      

    var timer = new Timer(function () {
        console.log("refreshingBid");
        refreshBid();

        // The current timer has completed. If the current 
        // iteration is less than 5...
        if(i < 5) {

          i++;

          // .. then start another timer for the next iteration
          MyFunc();
        }
    }, 5000);

    timer.pause();
    if (isElementInViewport() === true) {
        console.log("element in view");
        timer.resume();
    } else {
        timer.pause();
        console.log("element is out of view")
    }

}

// Start the first iteration
MyFunc();
//跟踪当前迭代
var i=0;
函数MyFunc(){
变量计时器=新计时器(函数(){
控制台日志(“刷新出价”);
刷新出价();
//当前计时器已完成。如果当前计时器
//迭代少于5次。。。
如果(i<5){
i++;
//..然后为下一次迭代启动另一个计时器
MyFunc();
}
}, 5000);
timer.pause();
如果(IsElementViewPort()==真){
console.log(“视图中的元素”);
timer.resume();
}否则{
timer.pause();
log(“元素不可见”)
}
}
//开始第一次迭代
MyFunc();

这是因为它快速循环了5次,然后所有5次循环都在5秒后延迟。超时会在5秒后暂停,而不是提前5秒暂停。

您缺少一些代码,请添加它。什么是
计时器
?添加了完整的带有计时器的代码-这里的想法是当一个元素在视图中时,计时器将resume,当它不在视图中时,它将暂停。在视图中5000毫秒后,该函数将运行
refreshBids()
函数。JavaScript的Wait/async就是这样的……这叫什么?
嵌套环回
?是的,这里可以使用async/Wait使解决方案更加优雅。