我从ajax调用获得了一系列jQuery promise。例如:
AjaxCall1.then(AjaxCall2).then(AjaxCall3) etc...
在一些ajax调用之间我做了一些处理,例如第一个获取搜索内容,下一个执行搜索,第三个处理搜索结果。
如果AjaxCall2没有返回搜索结果,我想要做的是打破seqeuence。 (我将重新运行该功能)
我该怎么做?
答案 0 :(得分:0)
然后你可以传递第二个参数作为失败的回调函数
AjaxCall1.then( AjaxCall2, AjaxCall1 ).then(AjaxCall3, AjaxCall2)
或使用.done和.fail
AjaxCall1.done( AjaxCall2 ).fail( AjaxCall1 ).... //and so on
答案 1 :(得分:0)
如果AjaxCall2没有返回搜索结果,我想要做的是打破seqeuence。
不要“不返回结果”,而是“抛出异常” - 序列将自动中断。您可以在AjaxCall2
函数中rejecting a deferred执行此操作。
我将重新运行该功能
您甚至可以通过将它们安装为错误处理程序来重新运行它们:
function tryToFind() {
return AjaxCall1().then(AjaxCall2); // which might fail
}
tryToFind().then(null, tryToFind /* again! */).then(AjaxCall3);