ES5与ES6的承诺

Par*_*ngh 17 javascript promise es6-promise

我想知道JS承诺是否是es5的一部分?如果是这样,为什么它有时在旧版浏览器中不起作用,我们必须为它添加一个polyfill.另外,在这种情况下应该添加哪种polyfill,es5 one或es6?我对此有点困惑.

jfr*_*d00 37

ES5没有承诺.像jQuery或Angular这样的库有自己的自定义和非标准的promise实现.

与ES5一起使用的流行Promise实现是Bluebird(与ES6标准兼容)和Q(最初与ES6标准不兼容 - 尽管似乎正朝着这个方向发展)和RSVP.

实际的polyfill也不是因为它们添加了额外的功能,所以如果存在本机承诺,它们就不会偏离.

ES6承诺有一些纯粹的polyfill.这是RSVP的一个子集:https://github.com/stefanpenner/es6-promise.

有理由使用多个填充物,你可以在这里阅读:由于我们有ES6承诺,是否还有理由使用Q或BlueBird等承诺库?

询问特定polyfill库的建议在Stack溢出时被认为是偏离主题的,因此我不会对此发表评论.

  • @ParamSingh - ES5,标准,不包括承诺.我们已经说过了.浏览器很长一段时间都超越了ES5,并且已经实现了ES6的部分内容,包括承诺.但是,严格的ES5实现没有承诺,它们不以任何方式成为ES5标准的一部分.它们被添加到ES6的标准中.有一个单独的Promises/A +标准,它定义了比ES6更长的承诺. (3认同)