2013-08-30 67 views
0

是否jQuery.when().done深入檢查異步事件是否完成?'jQuery.when()。done`深入檢查異步事件是否完成?

也就是說,如果我有以下代碼:

$.when(ajaxFunc()) 
.done(myFunc); 

如果ajaxFunc()有另一個異步調用,說ajaxFunc2()myFuncajaxFunc()後或ajaxFunc2()後執行?

+0

'when'只考慮作爲參數提供的* immediate * Promises。使用Promises/A的真正技巧是認識到1)[*只有'then'是必需的](http://wiki.commonjs.org/wiki/Promises/A)和2)*'then'返回一個新承諾*:這就是Promises/A的力量在「鏈接工作」中發揮的作用。其他一切都在爲此而打扮。 (jQuery <1.8有一個不正確的Promises/A實現。) – user2246674

回答

1

不,如果ajaxFunc調用另一個異步功能,$.when不是等待第二個電話來完成。

通常你會內ajaxFunc使用.then到鏈的第二個電話:

function ajaxFunc() { 
    return $.ajax(...).then(ajaxFunc2); 
} 

.then鏈將只調用ajaxFunc2$.ajax完成,但隨後會返回一個新的承諾,是ajaxFunc2結果。這是承諾傳遞給$.when()

相關問題