Ember.js - 不同的承诺 类

Ember.js - different promise classes

使用有什么区别:

new RSVP.Promise() (docs)

new Promise() (docs)

在 Ember 应用程序中?

他们只是别名吗?

第一个创建新的 RSVP 承诺。 RSVP 承诺是 ES6/A+ 兼容的,因此它本质上是一个 polyfill(具有一些额外的功能)。这样做没有错。

第二种情况取决于调用代码的范围。如果你在某个地方有 var Promise = RSVP.Promise;,它们的意思是一样的。但是,如果您没有自己声明 Promise,这可能会回退到浏览器实现(如果存在的话)。因为 RSVP 是 ES6/A+ 兼容的,所以您可能不会注意到是否使用了浏览器实现(除非您使用的是自定义 RSVP 方法)。

简答长:它们可能表示相同的意思,但也可能不同。

就我个人而言,我更喜欢第二种方法,因为当删除 RSVP 并使用浏览器实现时,无需更改任何代码。我只是在我的脚本开头做 window.Promise = window.Promise || Ember.RSVP.Promise 作为 polyfill。但如果您这样做,请务必只使用 this page 中列出的方法,而不是任何额外的 RSVP 方法。