$.when().done() Jquery 函数执行流程不工作

$.when().done() Jquery functions execution flow not working

我在 $.when(f1,f2) 中调用了两个函数,但在解析 f2 之前调用了 done() 。但是,如果我将 alert() 语句放在 done 中,它工作正常。

function f1(){
var d= new $.Deferred();
 .......code......
 d.resolve();
 return d.promise();
}
function f2(){
var d= new $.Deferred();
 .......code......
 d.resolve();
 return d.promise();
}
function f3()
{.....code.....    }

 $.when(f1().f2()).done(f3());

以上代码甚至在 f2() 解析之前就调用了 f3。但是,如果我在 done() 中放入警报语句,它工作正常。

 $.when(f1().f2()).done( alert ("came here");f3());

这是按正确顺序执行的。

$.when(f1,f2).then() 也一样。谁能告诉我这种异常行为的原因是什么。

语法正确,

$.when() 方法 promise's.in 你的代码 我可以在 $.when() 方法中的两个函数调用之间看到点而不是逗号。

正确的语法是

$.when(f1(), f2()).then()  

$.when(f1(), f2()).done()

.done() 需要像这样传递函数引用:

 $.when(f1(),f2()).done(f3);

您还需要在 $.when() 的两个参数之间使用逗号(而不是句号),但我认为这只是您问题中的错字。

当您执行 $.when(f1(),f2()).done(f3()); 时,在 f3 之后使用括号,会立即执行 f3(),然后将其 return 值传递给 .done(),即不太可能是你想要的。