2
我不得不麻煩來完成以下任務。 我有三個功能等待ajax顯示結果
function f1(param1) {
var d = $.deferred();
// ajax call with data param1
d.resolve(res0, res1);
return d.promise();
}
function f2(param2) {
var d = $.deferred();
// ajax call with data param2
d.resolve(res2);
return d.promise();
}
function f3(param3) {
var d = $.deferred();
// ajax call with data param3
d.resolve(res3);
return d.promise();
}
我跑他們是這樣的:
$.when(f1(param1),f2(pram2),f3(param3)).done(function(res,res2,res3){
});
我的要求是:
如果RES2是空的運行f2(res[1])
。做一次顯示res[0] + f2(res[1]) + res3
其他顯示res[0] + res2 + res3
是否有任何一個誰可以幫我這個使用jQuery /承諾?
謝謝
謝謝你的回答。 (f1(p1),res2,f3(p3))中的「return $ .when(res,res2,res3)」這一行中。如果是這樣,我想我會發送另一個Ajax調用來獲得我已經有的結果:res [0]和res [3]。 res [0]和res3已準備好被解散,不依賴任何東西。只有res2取決於res [1] – 2013-03-22 16:27:55
@ Bes-mM-bes no,該行意味着我所說的。當你傳遞的東西不是'$ .when'的承諾時,它隱含地被認爲是「解決的」,所以傳遞'(res,promise,res3)'只會等待(重新)解決中間值 - 另一個參數將作爲正常值傳遞給'.done'調用。 – Alnitak 2013-03-22 17:52:50
完美!有用。謝謝。 – 2013-03-25 08:46:27