我的问题非常笼统,一些相关的问题可以在SO上找到,但这些都不是我想要的.
我一直在阅读/玩弄jQuery Deferred object并且我看到它在库本身中被大量使用来处理ajax请求和动画等.我理解一般功能并且认为它已被证明在某些情况下非常有用. jQuery库使用这个概念非常优雅地解决了一些问题.
现在我的问题是:我认为使用Deferred对象概述可以优雅且稳健地解决的不同问题/解决方案场景将非常有用.
在哪种情况下使用jQuery Deferred的解决方案? javascript软件设计中哪些一般模式可以区分,可以使用jQuery Deferred功能最优雅地解决?我的目标是编制一个非常一般的模式列表(与非常具体的例子相反),本着每个OO分析师都知道的四种设计模式的精神.
有了这样的清单,在设计jQuery解决方案时,应该利用这些延迟模式的第二天性,就像桥梁,工厂……模式已经帮助我们设计灵活而强大的解决方案一样无需每次都重新发明轮子.
In which situations is a solution using jQuery Deferred called for
我认为这是一个拇指规则,每次你都有
>一个或多个异步任务
>一些相关的回调取决于这些任务的成功/失败
您可以尝试根据延迟对象和承诺重构代码.最常见的情况是延迟对象最多可以使用
> Ajax请求和回调/ s(单个请求,并行或链接请求)
>异步加载要在加载事件中执行的资产和操作(例如像这样的图像预加载器:https://gist.github.com/958683)
>完成动画或许多顺序动画后要执行的回调,这需要很多嵌套作用域:只需将一个promise()方法链接到animate()方法就可以轻松实现,以便返回一个承诺来处理with done()回调(说实话我无法弄清楚动画如何失败)
希望这个暗示在某种程度上有用.