使用setTimeout(函数,延迟)的函数之间的JavaScript延迟

时间:2014-03-01 22:38:56

标签: javascript delay settimeout

我希望我的程序在每次执行之间执行延迟。现在我有了这个:

function function0() {
    setTimeout(function1, 3000);
    setTimeout(function2, 3000);
    setTimeout(function0, 3000);
}

每次执行function0之间都有延迟,但在function1和funtion2之间没有延迟,function2在function1之后立即运行。我该如何解决这个问题?

4 个答案:

答案 0 :(得分:2)

这不优雅,但它应该有效..在功能2结束时,功能1将在3秒后执行,功能1和循环功能之间相同。

function function0() {
    setTimeout(function() {
        // <my_function2>

        setTimeout(function() {
            // <my_function1>

            setTimeout(function0, 3000);
        }, 3000);
    }, 3000);
}

答案 1 :(得分:0)

所有功能在3秒后执行。你的意思是这样做:

function function0() {
    setTimeout(function1, 3000);
    setTimeout(function2, 6000);
    setTimeout(function0, 9000);
}

答案 2 :(得分:0)

setTimeout是非阻塞的,因此所有这三个函数都将在3秒后运行。把它改成这样的东西:

function function0() {
    setTimeout(function1, 3000);
    setTimeout(function2, 6000);
    setTimeout(function0, 9000);
}

将使他们每人分开3秒。如果您不想对此进行硬编码,可以使用setInterval,增加函数名称(因为您的函数有数字来区分它们),然后在x次迭代后停止:

var i = 0,
int = setInterval(function () {
    // Function logic
    i++;
    if (i === 3) {
        clearInterval(int);
    }
}, 1000);

答案 3 :(得分:0)

或者你可以这样做:

function function0() {
    setTimeout(function1, 3000);
}
function function1() {
    /*
     Your code here
     */
    setTimeout(function2, 3000);
}
function function2() {
    /*
     Your code here
     */
    setTimeout(function3, 3000);
}
function function3() {
    /*
     Your code here
     */
}