执行功能接连不断

cmp*_*ger 3 javascript jquery timeout

我有这个javascript代码:

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

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

非常感谢你的帮助 :)

pix*_*bby 9

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

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

    // THEN
    doOtherThings();

    // THEN
    doMoreThings();
}; 

var doOtherThings = function(){
    //DOING OTHER THINGS
}
var doMoreThings = function(){
    //DO EVEN MORE THINGS
}
Run Code Online (Sandbox Code Playgroud)

  • 没有赞成?噢,你们今天是螃蟹:] (4认同)

Rob*_*ert 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/>");
Run Code Online (Sandbox Code Playgroud)

产量

I'm blocking, blah
Running
I'm not blocking, blah
Running
Run Code Online (Sandbox Code Playgroud)

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