JavaScript链接很多功能

时间:2014-12-31 09:33:56

标签: javascript jquery

Newbe in JavaScript, 我有4个功能说:

function funct1(){
    //dosomething();
}

function funct2(){
    //dosomething();
}

function funct3(){
    //dosomething();
}

function funct4(){
    //dosomething();
}

我想要执行funct1那么功能2和功能3。 但我确实希望funct4仅在funct2和funct3完成后执行! 我怎么能实现这一点,我想有更好的方法来做到这一点?

我试过这个,但不太确定正在运行的是什么

function foo(callback){
    funct1;
    funct2;
    funct3;
    callback();
}

function bar(){
    foo(funct4);
}

2 个答案:

答案 0 :(得分:2)

您可以通过以下方式完成此操作:

$.when(funct1).then(funct2).then(funct3).then(funct4)

jQuery有自己的承诺实现,请查看文档或类似http://tutorials.jenkov.com/jquery/deferred-objects.html

的好教程

答案 1 :(得分:0)

如果你的一个(或所有)函数是异步的,假设你用jQuery标记了你的问题,你可以使用promises。

function funct1(){
    var dfd = $.Deferred();
    //Inside some async function, eventually:
    dfd.resolve();
    //More code
    return dfd.promise();
}

然后,您可以将您的功能连接在一起,如Victor的答案所示 如果您需要等待多个承诺完成(并且并行运行多个),您可以使用

$.when(funct1, funct2).done(function (arg1, arg2) {
});