我有一個jQuery的承諾,我從ajax調用序列。例如:打破jQuery Ajax然後/承諾序列
AjaxCall1.then(AjaxCall2).then(AjaxCall3) etc...
一些Ajax調用我做一些處理之間,例如第一個獲得該怎麼尋找,下一個執行搜索,第三個處理來自搜索的結果。
我想要做的就是打破如果AjaxCall2沒有返回搜索結果的序列。 (而且我會重新運行這個功能)
我該怎麼做?
我有一個jQuery的承諾,我從ajax調用序列。例如:打破jQuery Ajax然後/承諾序列
AjaxCall1.then(AjaxCall2).then(AjaxCall3) etc...
一些Ajax調用我做一些處理之間,例如第一個獲得該怎麼尋找,下一個執行搜索,第三個處理來自搜索的結果。
我想要做的就是打破如果AjaxCall2沒有返回搜索結果的序列。 (而且我會重新運行這個功能)
我該怎麼做?
有了那麼你可以傳遞第二個PARAM作爲失敗的回調函數
AjaxCall1.then(AjaxCall2, AjaxCall1).then(AjaxCall3, AjaxCall2)
或使用.done和.fail
AjaxCall1.done(AjaxCall2).fail(AjaxCall1).... //and so on
我想要做的就是打破seqeuence如果AjaxCall2不返回搜索結果。
只要不「返回任何結果」,而是「拋出一個異常」 - 和順序將自動中斷。您可以在您的AjaxCall2
功能中通過rejecting a deferred完成此操作。
,我實際上將重新運行該功能
通過安裝他們作爲一個錯誤處理您甚至可以重新運行它們:
function tryToFind() {
return AjaxCall1().then(AjaxCall2); // which might fail
}
tryToFind().then(null, tryToFind /* again! */).then(AjaxCall3);