jquery返回的promise是否提供了最后处理所有错误的规定。像这样:
如果是这样,我将不胜感激一些代码,也许使用原始的$.deferred
,.done
和.fail
尝试过的文档:http://api.jquery.com/deferred.fail/
最佳答案
注意:答案假定为jQuery 1.8+。在jQuery 1.8之前,jQuery的promise / deferred实现无法通过这种方式工作。.done()
/ .fail()
和.then()
函数之间有细微的差别-从1.8开始,.then()
的主要用法是应用过滤器,而.done()
/ .fail()
只是应用回调。区别在于.done()
和.fail()
返回相同的promise(因此,调用.done().done().done()
只会向初始promise添加更多回调),而.then()
为过滤器返回的值返回新的promise(因此, >返回一个新的promise,它将用成功返回的值来解决)。
可以在这里找到这种差异的示例:http://jsfiddle.net/BGSacho/HsMSv/4/
因此,要复制与该映像相同的功能,您需要:
Deferred.then(success_a)
.then(success_b)
.then(success_c, failure);
可悲的是,jQuery文档对此主题有些粗略,但是您可以在http://api.jquery.com/deferred.then/上看到它。
在接受的答案中使用
.then(success)
也是可以的,因为它将返回一个新的承诺,当任何给定的承诺被拒绝时,新的承诺将被拒绝,并使用所有合并的数据成功解析。