我正在尝试setTimeout一定次数。我的意思是我可以简单地这样做,但我觉得有一种更好的方法来做同样的事情。使用for-loop根本没有感觉到高效(虽然我是一个新手并且不知道)。
for (var i = 0; i < 1000, i++;){
setTimeout(myFunction, 5);
}
function myFunction(){
//Do something cool
}
谢谢,请不要使用任何JQuery
答案 0 :(得分:-1)
这是伪递归调用函数f
,n
次的有用模式,其间有延迟:
function setTimeoutRepeat(f, delay, n) {
(function loop() {
if (n-- > 0) {
f();
setTimeout(loop, delay);
}
})();
}
setIntervalRepeat(myFunction, 5, 1000);
答案 1 :(得分:-2)
好吧,我不知道为什么你不喜欢()循环,也许你更喜欢递归:
function myFunction(){
//Do something cool
console.log('Cool!\n');
}
(function re(i) {
if (i>0) {
setTimeout(myFunction, 5);
re(i-1);
}
}) (1000);
请注意,此解决方案效率较低,因为它本身使用堆栈(或JS中的任何替代品)进行递归调用。
您也可以考虑使用map()函数,但同样,您必须在某处存储数组。在这种情况下,()循环的好旧是你最好的镜头。