问题 任何jQuery版本是否符合Promise / A规范?


经过几篇文章后,我逐渐了解了jQuery中的promise实现。但我不确定是否有任何版本的jQuery是否符合Promise / A.


8936
2018-05-30 09:55


起源

没有jQuery真的是Promises / A抱怨(这在今天的条款中是一个糟糕的标准,并且因为它而被Promises / A +取代)。事实上 所有jQuery承诺都非常可怕。我可以推荐一下 知更鸟 代替? - Benjamin Gruenbaum
@BenjaminGruenbaum是的,我有红色,Bluebird的性能优于q和库。 - Pulak Kanti Bhattacharyya


答案:


2015年更新:jQuery 3.0是Promises / A +兼容。看到 这个问题在GitHub上 所以3.0 beta是3.0兼容的,当3.0出来时它也兼容。在此之前 - 以下仍然适用。

所有jQuery版本(最多3.0)都有一个 破碎的承诺实施

它们不允许错误处理,并且它们不能很好地与其他实现混合和匹配。

然而, 从版本1.8开始 .then 存在,这意味着你可以使用jQuery实现作为承诺。这是一个尝试修复 这个bug 并成为 更多 承诺/ A合规。有 努力提高互操作性无论如何,这是承诺规范的全部内容,这项工作的目标是2.2和1.12。

这意味着从2.2开始,jQuery promises将能够与其他promise库互操作,像任何promise库一样吸收可能,并且根据规范行为更少。

对于所有实际用途,您应该考虑另一种实现。

那里有许多好的承诺实施。例如Bluebird是快速的(比jQuery承诺快得多),具有低内存占用,具有惊人的堆栈跟踪和调试支持,并与jQuery承诺无缝地进行互操作并吸收它们。


15
2018-05-30 15:32



Benjamin从你的话中我明白了1)在实际项目中,最好只使用jQuery进行DOM操作2)如果在同一个项目中需要实现promise,那么还应该使用像Bluebird这样的库到jQuery。我的理解是否正确?或者你想建议一些不同的东西。 - Pulak Kanti Bhattacharyya
@PulakKantiBhattacharyya是的,无论如何。这正是我使用的堆栈。蓝鸟是最好的,但是 大多数其他 实现仍然比jQuery好很多。 - Benjamin Gruenbaum
我有兴趣学习蓝鸟。你可以分享一些教程链接/例子来更好地理解@Benjamin吗? - Pulak Kanti Bhattacharyya
Downvoter,我们很乐意有你的想法。 - Pulak Kanti Bhattacharyya
@ adi518你可以建议编辑 - 我已经手动修改了建议。谢谢 - Benjamin Gruenbaum