$.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()
,即不太可能是你想要的。
我在 $.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()
,即不太可能是你想要的。