延迟后在jQuery中运行函数
所以,基本上我有三个函数,我希望它们以两秒的延迟一个接一个地运行 我想实现以下目标:延迟后在jQuery中运行函数,jquery,function,timeout,delay,intervals,Jquery,Function,Timeout,Delay,Intervals,所以,基本上我有三个函数,我希望它们以两秒的延迟一个接一个地运行 我想实现以下目标: firstFunction(); // Two seconds delay secondFunction(); // Two seconds delay thirdFunction(); // Two seconds delay firstFunction(); 等等。我尝试了setInterval、setTimeout、jquery delay,但到目前为止我一无所获——在最佳情况下,这三个函数同时运行。确
firstFunction();
// Two seconds delay
secondFunction();
// Two seconds delay
thirdFunction();
// Two seconds delay
firstFunction();
等等。我尝试了setInterval、setTimeout、jquery delay,但到目前为止我一无所获——在最佳情况下,这三个函数同时运行。确切地说,这三个函数的代码相当相似
var active = $(".active.two").removeClass('active');
if (active.next('img') && active.next('img').length) {
active .next('img').addClass('active');
} else {
active.siblings(":first-child").addClass('active');
}
如果您能告诉我正确的方向,我将不胜感激。您可以使用
setInterval
来实现这一点。通过将对函数的引用存储在一个数组中,然后依次调用它们,可以简化此过程。试试这个:
function funcOne() {
console.log('one');
}
function funcTwo() {
console.log('two');
}
function funcThree() {
console.log('three');
}
var i = 0;
var funcs = [ funcOne, funcTwo, funcThree ];
setInterval(function() {
funcs[i % funcs.length]();
i++;
}, 2000);
假设您的函数是同步的,您希望在每个函数完成后使用
setTimeout()
安排对下一个函数的调用。下面的示例将调用每个函数,每次调用之间有2秒的延迟
function firstFunction(){
$(“#log”).append(“First”);
}
函数secondFunction(){
$(“#log”).append(“Second”);
}
函数thirdFunction(){
$(“#log”).append(“Third”);
}
函数调用函数(函数列表、延迟){
函数callNextFunc(){
if(函数列表长度){
var nextFunc=function_list.shift();
nextFunc();
设置超时(callNextFunc,延迟);
}
};
callNextFunc();
}
var function_list=[firstFunction,secondFunction,thirdFunction];
调用函数(函数列表,2000年)代码>
duplicate准确地说,这三个函数的代码非常相似
>>听起来确实像是一个XY问题,您最好发布有关预期行为的问题,而不是您认为合适的解决方法。如果您只想在一个周期内将active
类设置为不同的元素,那么请发布相关的HTML标记。这个答案完全正确,但我找到了一个更简单的解决方案,但非常感谢@用户3323095就够了。如果你有长时间运行的函数,那么这个答案和的答案会有所不同;除此之外,他的方法简单得多。