Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
延迟后在jQuery中运行函数_Jquery_Function_Timeout_Delay_Intervals - Fatal编程技术网

延迟后在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就够了。如果你有长时间运行的函数,那么这个答案和的答案会有所不同;除此之外,他的方法简单得多。