调用javascript函数后放置延迟的最佳方法

我正在使用jquery调用一些javascript函数,它们之间有延迟。
我也在使用Jquery Wait

当我调用下面的函数时,所有函数都被分别调用,彼此之间没有延迟。

$(this) .call(f1) .wait(5000) .call(f2) .wait(5000) .call(f3); 

这里调用函数调用一些函数,就像我一样

 $.fn.call = function (f) { if (f) f(); return this; }; 

我究竟做错了什么 ? 我怎样才能实现这样的目标?
谢谢

如果你想每5秒钟调用一次function

 setTimeout(function(){f1},5000); setTimeout(function(){f2},10000); setTimeout(function(){f2},15000); 

如果你想在最后一次终止使用后5秒钟调用每个function

 setTimeout(function(){f1;setTimeout(function(){f2;setTimeout(function(){f3},5000);},5000);},5000); 

你不需要那个食谱中的wait() ; delay()是内置的,似乎具有相同的function。 但是任何一个函数都需要在jQuery的内部效果队列中添加一些内容,然后在超时到期后删除它,即它不是一个sleep语句,因此它不会在返回之前等待。

如果你想使用delay()wait() ,你应该使call()用queue()对函数进行排队 。 只是草绘,但有类似的东西:

 $.fn.call = function(f) { if (f) { $(this).queue(function() { f(); $(this).dequeue(); } } return this; } 

然后我希望你的代码按照你想要的方式工作。

这是一个函数,它按顺序调用一个函数数组:

 $.fn.callFn = function(fns, delay) { var fn, that = this; if(fns.length > 0){ fn = fns.shift() fn && fn(); setTimeout(function(){ that.callFn(fns, delay); }, delay); } return this; }; 

你会这样称呼它:

 $(this).callFn([f1, f2, f3], 2000); 
 $('#box').slideUp(300).delay(800).fadeIn(400); /* .delay = wait time = 800 (this means it will wait 800/1000 of a second/ "1000 = 1 second") */