为什么在使用诺基亚时使用Q,蓝鸟框架?

在node.js学习承诺期间 我有一些疑问。
'promise'已经在node.js中定义了
但通常它似乎使用额外的承诺框架,如Q,蓝鸟,RSVP等
有什么理由吗?

核心node.js函数是不是可以用promise.denodeify函数来支持promise?

我不能说Q,但是Bluebird比原生的Promise快很多,并且在本地承诺之上提供了一些额外的function。

lodash尽pipe有[].map() ,使用lodash原因也是一样的。

另外,Bluebird比原生的Promise实现有更好的浏览器支持。


不过通常你只能在服务器上使用Bluebird。 额外的function和速度是不值得的用户必须下载图书馆的额外的大小。

那么,承诺是原生的JavaScript对象。 所有这些库都是用户级实现。 例如,如果我们看蓝鸟它有:

  • 许多实用function和帮手,使您的生活更轻松。
    • 它已经键入.catch ,确保您不会错误地捕捉程序员错误。
    • 它有.some .any .map .filter等等,可以轻松处理集合。
    • 它具有.reflect和同步检查的承诺。
  • throw一个then处理程序时,它不会默认吞下错误。
  • 内置协同(发生器)支持来平滑asynchronousstream。
  • 在不同的浏览器中,它比原生的承诺更快​​(通常在4倍和10倍之间)。
  • 它提供了更多的debugging钩子和更好的堆栈跟踪。
  • 它提供了针对常见诺言反模式的警告。
  • 它可以让您重写调度程序,以便确定如何调度任务。
  • 它支持承诺取消与声音语义提出的本地承诺,但尚未采纳。

所以在一个tl;博士; :

  • 速度更快
  • 它更可debugging。
  • 它有一个更丰富的API。

现在,你是否应该使用它取决于你 – 包括图书馆在内总是有开销 – 我有偏见作为核心贡献者。