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)也是可以的,因为它将返回一个新的承诺,当任何给定的承诺被拒绝时,新的承诺将被拒绝,并使用所有合并的数据成功解析。

07-24 17:21
查看更多