Ali*_*ned 34 javascript jquery promise breeze q
我正在研究BreezeJs,并且有样本正在使用Q.js来处理异步调用.John Papa也在使用Q.JQuery也有承诺.两者有什么不同?
Ber*_*rgi 49
两者都基于Promises/A标准并实现了一个then方法(虽然只有当前的jQuery,它们曾经有一个不兼容的pipe而不是then).但是,存在一些差异:
then将捕获异步回调中的所有抛出错误并拒绝承诺(并且只有在您调用时才会重新抛出.end()).不确定我个人是否喜欢这样.这是jQuery不遵循的标准化方式,在jQuery延迟中拒绝then要复杂得多.then),而jQuery允许在其Deferreds的resolve/ rejectcalls中使用多个参数..all和类似,jQuery($.when.apply($, […]))更复杂....它基本上诺言/ B.正如您所看到的,QAPI更强大,并且(imho)设计得更好.根据你想做的事情,Q可能是更好的选择,但也许jQuery(特别是如果已经包含)就足够了.
Dom*_*nic 13
Bergi的答案很好地涵盖了事情.不过,我想补充说,我们已经为来自jQuery的Q用户创建了一个指南.总结相关部分:
then/ pipe.this调用者必须运行的值).所以没有resolveWith或rejectWith.该指南还包含一个与jQuery和Q promise API并行的表.