Ember的承诺如何与Promise有关,特别是jQuery的Promises?

时间:2013-07-06 03:11:43

标签: jquery ember.js promise rsvp.js

有助于了解Ember's Promise的一些重要问题:

  1. Ember's RSVPTildeio's RSVP相同吗?如果没有,它们有何不同?它们有什么关系?

  2. JavaScript“承诺”有不同的风格,即规格吗?如果确实如此,jQuery Promise是否使用一组Promise规范(它是什么?)而EmberRSVP.Promise使用一组不同的Promise规范,即{{} 3}}

  3. Promises/A+Ember RSVP's Promise.then()Tildeio RSVP's Promise.then()如何相关? Ember的Promisethen()与jQuery的Promisethen()有什么不同?知道如何避免错误。

  4. 在Ember的RESTAdapter的jQuery's deferred.then() RSVP.Promise中使用Ember的updateRecord示例。这些是关于jQuery ajax callPromisethen() #1的一些SO帖子。我现在处于混乱状态。

1 个答案:

答案 0 :(得分:23)

这是一个很大的话题。我们花了几个小时谈论它在过去几个月EmberNYC meetup。如果你想了解承诺,一个好的起点就是退房:

  
      
  1. Ember的RSVP与Tildeio的RSVP相同吗?如果没有,它们有何不同?它们有什么关系?
  2.   

基本相同。 Tildeio的RSVP是可以找到RSVP的积极开发的地方。 Ember的RSVP是该库的副本。

  
      
  1. JavaScript“承诺”是否有不同的风格,即规格?如果确实如此,那么jQuery Promise是否使用一种类型的Promise规范(它是什么?)和Ember的RSVP.Promise使用一组不同的Promise规范,即Promises / A +?
  2.   

当然,它有不同的风格,不是设计,而是事物的演变。 Promises/A+是众多proposed promise specs中的一个,似乎拥有最多的牵引力。大多数promises实现(包括RSVP)都符合Promises / A +,这意味着它们通过了test-suite

我不相信jQuery的Promise实现本身有不同的规范。它与Promises / A差不多但并不完全一致。在大多数情况下,他们一起玩得很好。有一些与错误处理相关的边缘情况,其中jQuery承诺可能不像您期望的那样。 Domenic在他的演讲中详细介绍了这一点,你也可以在这篇文章中找到关于它的信息:whats so great about js promises

  

Ember RSVP的Promise.then(),Tildeio RSVP的Promise.then()和jQuery的deferred.then()如何相关?

Ember和Tildeio RSVP是一回事。除了以下内容之外,jQuery大致相同:

“如果错误处理程序返回除promise之外的其他内容,则大多数实现都会考虑处理错误,并且不会传播它。但是,jQuery不会考虑在这些情况下处理的错误,并且无论如何都要向前传播它。” - whats so great about js promises