0

在基于 John Papa 的 Hot Towel 模板开发我的第一个 SPA 应用程序时,我遇到了一个说明,表明 Durandal 使用 jQuery Promise,而 Hot Towel 中的所有其他库都使用 Q 作为 Promise。Durandal 确实有一个页面解释了如何打补丁,但我发现我的应用程序在有和没有它的情况下都一样。

http://durandaljs.com/documentation/Q/

我看到了关于 Q 优势的评论,对此我很满意,但我想知道这方面的专家是否建议修补 Durandal?

4

1 回答 1

0

tl;dr Q 和 jQuery 不可互操作

jQuery 不会返回一个新的承诺,而是改变应该是不可变的现有承诺。为什么这很重要?因为 $.then 函数不再是可链接的,并且错误处理无法按您预期的方式工作。在非常简单的情况下可能使它们一起工作,但实际上您不应该这样做。

另一件需要注意的事情是,根据一位 jQuery 开发人员的说法,出于向后兼容性的原因,这可能永远不会被修复。

这篇文章很好地解释了 jQuery Promise 的规范和当前状态。

于 2014-02-18T01:51:34.977 回答