执行功能接连不断

时间:2011-05-12 13:40:52

标签: javascript jquery timeout

我有这个javascript代码:

 if (direction !== "leftnav") { 
// DO THINGS
};
setTimeout(function () {
//DO OTHER THINGS AFTER THE FIRST THING
}, 1000);

是否可以在第一个之后执行2e功能而不必使用超时事件?

非常感谢你的帮助:)

4 个答案:

答案 0 :(得分:9)

是的,这是可能的。以下是使用您提供的唯一代码的示例:

if (direction !== "leftnav") {  
    // DO THINGS...

    // THEN
    doOtherThings();

    // THEN
    doMoreThings();
}; 

var doOtherThings = function(){
    //DOING OTHER THINGS
}
var doMoreThings = function(){
    //DO EVEN MORE THINGS
}

答案 1 :(得分:7)

如果if语句中的内容阻塞,则Javascript将从上到下运行。如果是这样,你可以将代码放在if语句的正下方,在超时之外,它将正常运行。如果它是异步的,您可以使用在第一个函数完成时触发的回调来启动第二个函数。

下面提供的示例并不是真正有效的做事方式,但更多用于说明我上面所说的内容。在write()函数中,您可能正在进行AJAX调用,或者等待用户单击某些内容,或者您​​有什么内容。解释器继续到下一行,该段将立即写入,并按阻止顺序。

<强> JS

var write = function (v, cb) {
    setTimeout(function() {
        document.write(v);
        cb && cb();
    }, 1000);
}

if (true) {
    write("I'm not blocking, blah<br/>", function() {
        document.write("Running<br/>");
    });
}

if (true) {
    document.write("I'm blocking, blah<br/>");
}
document.write("Running<br/>");

<强>输出

I'm blocking, blah
Running
I'm not blocking, blah
Running

http://jsfiddle.net/robert/vvmyk/

答案 2 :(得分:0)

您只需要按照您想要的顺序调用函数

function foo(){
//code
}

function bar(){
//other
}

bar();
foo();

像这样,bar将在foo之前调用。

答案 3 :(得分:0)

  

使用javascript promise和Promise.all