Javascript Promise与jQuery Deferred

吡咯

Javascript Promise与jQuery Deferred Objects的优缺点是什么?

例如,它们每个都有什么问题(如果有)?

一个堆栈溢出成员表示:

“……真正的承诺是真实的,而虚假的承诺是虚假的。”

他是什么意思?

jfriend00

没有“真正的承诺”或“假的承诺”之类的东西。有一些遵循当前标准的承诺实现,有一些没有遵循当前标准的承诺实现承诺没有“内在”或“虚假”的内在属性。它们是实现标准行为的Javascript的一部分。

严格遵循标准的任何承诺实现都应该可以使用,并且应该可以与其他标准承诺实现互操作。大多数人会认为互操作性和遵守公认的标准是有用的特性。

现在,jQuery Promise不遵循Promise标准,这是某些人对jQuery Promise不好的评价。他们显然正在努力使它们成为jQuery未来版本的标准,但目前它们在许多方面都偏离了标准。这导致的问题是,使用jQuery Promise时与使用标准Promise时,您必须编写不同的代码。因此,jQuery Promise代码看起来与ES6 Promise代码不同。

jQuery Promises中的问题

有关当前jQuery Promise问题的列表,请参见此参考两个主要的有一个与被拒绝的承诺错误处理问题在执行顺序的不一致.then()回调这会导致不可预料的或不一致的代码执行。所有.then()处理程序都应该异步执行(在JS当前线程展开之后)。jQuery Promise并不总是这样做,它可能会在某些类型的代码中引起问题。

浏览器中本机承诺的状态

原生承诺在浏览器中是一个新事物,因此您还不能仅仅依靠所有可能访问您网站的浏览器都必须内置原生承诺的事实。原生承诺内置于从Safari 7.1开始的浏览器中,Firefox 29,Chrome 32,Edge,Android 4.4.4,IOS 8.4,并且IE中尚不可用(截至2015年9月)。因此,您仍然需要一个相当新的浏览器才能获得本机Promise支持。因此,有许多优秀的Promise库可以提供polyfill或完全替代品,从而使您的代码能够在任何浏览器中使用Promise,而与本机Promise却毫不妥协。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章