0
是否jQuery.when().done
深入檢查異步事件是否完成?'jQuery.when()。done`深入檢查異步事件是否完成?
也就是說,如果我有以下代碼:
$.when(ajaxFunc())
.done(myFunc);
如果ajaxFunc()
有另一個異步調用,說ajaxFunc2()
將myFunc
被ajaxFunc()
後或ajaxFunc2()
後執行?
是否jQuery.when().done
深入檢查異步事件是否完成?'jQuery.when()。done`深入檢查異步事件是否完成?
也就是說,如果我有以下代碼:
$.when(ajaxFunc())
.done(myFunc);
如果ajaxFunc()
有另一個異步調用,說ajaxFunc2()
將myFunc
被ajaxFunc()
後或ajaxFunc2()
後執行?
不,如果ajaxFunc
調用另一個異步功能,$.when
不是等待第二個電話來完成。
通常你會內ajaxFunc
使用.then
到鏈的第二個電話:
function ajaxFunc() {
return $.ajax(...).then(ajaxFunc2);
}
的.then
鏈將只調用ajaxFunc2
當$.ajax
完成,但隨後會返回一個新的承諾,是ajaxFunc2
結果。這是,承諾傳遞給$.when()
。
'when'只考慮作爲參數提供的* immediate * Promises。使用Promises/A的真正技巧是認識到1)[*只有'then'是必需的](http://wiki.commonjs.org/wiki/Promises/A)和2)*'then'返回一個新承諾*:這就是Promises/A的力量在「鏈接工作」中發揮的作用。其他一切都在爲此而打扮。 (jQuery <1.8有一個不正確的Promises/A實現。) – user2246674