Javascript中的循环超时
Timed for loop in Javascript
我甚至不知道如何开始:我需要一个for循环来执行function
(比如简单的console.log()
(,每次执行之间都有定时延迟。我一直在尝试用setTimeout()
来做这件事,但它从来都不起作用。如果我从setTimeout调用具有循环的函数,它将不起作用。理想情况下,我希望我的for
循环打印x次内容,每次打印之间有几秒钟的延迟。有什么想法吗?我试过这样的东西:
function printStuff(){
for(var i=0;i<5;i++){
console.log(i);
}
};
setTimeout(printStuff(),1000);
对我来说,你应该执行setInterval
,在里面你应该增加计数器。当计数器达到极限时,只需清除间隔即可。
var counter = 0;
var limit = 10;
var myVar = setInterval(function(){
if (counter > limit)
{
clearInterval(myVar);
}
counter++;
console.log("test");
}, 1000);
init();
function init() {
setTimeout(init, 2*1000); // wait 2 sec then call init again
console.log(Date());
}
或者使用setInterval
:
// Call init after 2 sec and repeat calling it every 2. sec
setInterval(init, 2*1000);
function init() {
console.log(Date());
}
您可以使用异步模块。
var count = 0;
async.whilst(
function () { return count < 5; },
function (callback) {
count++;
console.log(count);
setTimeout(callback, 1000);
},
function (err) {
// 5 seconds have passed
}
);
通过这种方式,计数将每秒打印一次
var i = 0;
function timeout(){
setTimeout(log, 1000);
}
function log(){
console.log(i++);
timeout();
}
log();
http://jsfiddle.net/sq4v0kbf/
使用setInterval()
而不是setTimeout()
。参数完全相同:
setInterval(function () {
// your utility code goes here
}, 2000);
这里还有一种方法。使用包装器函数。
var time = 2000;
for (var i = 0; i < 10; i++) {
(function (i) {
setTimeout(function () {
console.log(i);
}, time);
})(i);
time+=2000;
}
您可以创建一种具有要运行的迭代次数/次数的延迟循环函数。类似这样的东西:
var delayedLoop = function (n, milliseconds) {
var iteration = function (n) {
if (n > 0) {
n--;
console.log(n);
setTimeout(function () {
iteration(n)
}, milliseconds);
}
};
iteration(n);
}
delayedLoop(4, 1000);
您甚至可以扩展这个想法,甚至每次都传递一个要执行的函数。
请参阅演示。
以下是我认为比setInterval 更简单的(并且没有的缺点(
var limit = 10,
counter = 0,
delay = 1000;
function doIt() {
document.body.innerHTML += 'Hit counter: ' + (counter++) + '<br />';
if (counter < limit) {
setTimeout(doIt, delay);
}
}
doIt();
你可以把它推广到
function runTimedLoop(delay, howMany, callback) {
var index = 0;
function iteration() {
callback(index++);
if (index < howMany) {
setTimeout(iteration, delay);
}
}
iteration();
}
runTimedLoop(1000, 10, function(index) {
document.body.innerHTML += 'Hit counter: ' + (index++) + '<br />';
});
相关文章:
- 使用javascript和随机暂停/超时快速循环文本
- 如何循环设置超时函数
- Confusing For循环内部有超时和关闭
- 设置超时可以保存我的循环函数不被视为无响应
- JavaScript set 超时循环返回值
- 设置超时在循环时执行
- 在继续循环之前完成设置超时
- 具有超时的循环函数
- 如何使用超时功能进行无限循环
- JavaScript 设置超时在循环和重复
- Javascript 在 for 循环中设置了超时函数
- while循环中的Javascript同步超时
- 更改图像超时循环 Javascript
- 在 JS 中的 while 循环中设置超时
- 创建循环设置超时 jquery 数组
- for循环,回调,一起超时,超时似乎不起作用
- 在超时循环中执行一系列函数
- 使用超时循环将数据加载到iframe的更好选项
- Javascript超时循环不会等待
- 设置超时/循环..还是一头雾水