JavaScript链接多个函数
JavaScript中的Newbe, 我有4个功能,比如:JavaScript链接多个函数,javascript,jquery,Javascript,Jquery,JavaScript中的Newbe, 我有4个功能,比如: function funct1(){ //dosomething(); } function funct2(){ //dosomething(); } function funct3(){ //dosomething(); } function funct4(){ //dosomething(); } 我想先演示funct1,然后是funct2和funct3。 但我确实希望funct4只在func
function funct1(){
//dosomething();
}
function funct2(){
//dosomething();
}
function funct3(){
//dosomething();
}
function funct4(){
//dosomething();
}
我想先演示funct1,然后是funct2和funct3。
但我确实希望funct4只在funct2和funct3完成后执行!
我怎样才能做到这一点,我想有更好的方法来做到这一点
我尝试过这个,但不太确定运行的是什么
function foo(callback){
funct1;
funct2;
funct3;
callback();
}
function bar(){
foo(funct4);
}
您可以通过以下方式完成此操作:
$.when(funct1).then(funct2).then(funct3).then(funct4)
jQuery有自己的承诺实现,请看一下文档或类似的教程如果您的一个(或所有)函数是异步的,鉴于您已经用jQuery标记了您的问题,您可以使用承诺
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) {
});
这将执行您想要的操作,除了在funct1,2,3之后需要
()
s,因此它们实际上是被执行的:funct1();funct2();funct3();回调()代码>这取决于dosomething()
是什么。它是异步的吗?我不确定你是否知道你到底想问什么。这听起来可能是个有趣的问题。还没有。也许你可以举几个真实的例子来说明你打算做什么,在那里你遇到了你要问的问题。函数是异步的,有一些调用$Ajaxemanuel Delay,谢谢你。我正在绘制一个仪表板,在某些情况下,需要绘制数据由funct4生成$Ajax,数据由funct2和funct4填充。由于异步执行,我遇到了错误,这就是为什么我要确保在执行func4之前func2和funct 3已终止。不知道是否更清楚!是的,所有的函数都是异步的,这似乎就是我想要的。我要试试看!