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);
}
答案 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) {
});