如何将一个 JQuery.Deferred() 对象上的所有事件传播到另一个对象?
有没有更好/更简单/更短的方法然后处理两者.fail
并通过调用其他对象和?我假设我不必处理,因为当我调用 Reject 或 resolve 时会调用它。.then
.done
.rejectWith
.resolveWith
.done
.then
我怀疑也许这可以使用.pipe
,但我不知道如何。
更新:
注意:我还根据@Frédéric Hamidi 的评论修复了上面的一些文本。
我想要达到的目标如下:
我有一个 API 对服务器进行 ajax 调用,它们会返回 ajax 对象(它本身就是一个 $.Deferred)。
在某些时候,我需要处理没有可用网络的情况(这是针对在移动设备上运行的 phonegap 应用程序)。
我想做的是,在没有网络连接的情况下,我会显示一个对话框,提示用户修复网络问题并点击“重试”。
但在这种情况下,我不会调用 $.ajax,直到用户点击重试,所以我没有 $.Defferred 对象来返回调用 API 开始的函数。
所以我最终明白我可以创建一个新的 $.Defferred 并将其返回,然后在重试按钮的回调中调用 $.ajax 本身,将其设置为“中继”/将延迟事件传播到我刚刚返回的事件将其作为封闭的一部分进行钻孔。
但我不确定该怎么做。我与该.pipe
方法的混淆是因为它的描述说它是:
过滤和/或链接 Deferreds的实用方法。
我希望这使我的问题更清楚。