簡體   English   中英

jQuery延遲:使用條件創建鏈序列

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM