[英]jQuery deferred: create a chain sequence using conditions
我發現自己處於以下情況。 我需要進行3次異步調用:僅在完成call1后才觸發call2,僅在完成call2之后才觸發call3(我還需要使用jQuery的延遲對象)。
function call1() {
return $.ajax(...);
}
function call2() {
return $.ajax(...);
}
function call3() {
return $.ajax(...);
}
在這一點上沒有什么復雜的,我可以只使用then()函數。
call1().then(call2).then(call3)
問題是有兩個條件(cond2和cond3)將確定是否進行call2和call3。 如果我使用偽代碼來描述它,它將看起來像這樣:
if cond2
if cond3
call1().then(call2).then(call3)
else
call1().then(call2)
else
if cond3
call1().then(call3)
else
call1()
我知道我可以通過編寫使用此結構的程序來解決問題,但這似乎並不正確。
我的問題是,如何使用jQuery的延遲對象以有效的方式解決此問題? 提前致謝!
這可能是您要尋找的:
var chain = call1();
if (cond2) chain = chain.then(call2);
if (cond3) chain = chain.then(call3);
return chain;
您可以這樣做:
call1().then(cond2 ? call2 : null).then(cond3 ? call3 : null);
非函數null
將使承諾的值返回,因此鏈中的下一個then
回調將仍然獲取承諾的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.