Javascript 向循环添加超时
我有一个功能,当计时器达到5000ms时执行操作: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也许您可以通过这种方式修改代码
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使解决方案更加优雅。