【发布时间】:2026-02-13 09:00:01
【问题描述】:
在 node.js 中学习 promise 的过程中。我有一些疑问。
'promise' 已在 node.js
中定义
但通常它似乎使用额外的承诺框架,如 Q、bluebird、RSVP 等。
有什么原因吗?
是node.js核心函数不能支持promise和promise.denodeify函数的原因吗?
【问题讨论】:
标签: node.js promise q bluebird
在 node.js 中学习 promise 的过程中。我有一些疑问。
'promise' 已在 node.js
中定义
但通常它似乎使用额外的承诺框架,如 Q、bluebird、RSVP 等。
有什么原因吗?
是node.js核心函数不能支持promise和promise.denodeify函数的原因吗?
【问题讨论】:
标签: node.js promise q bluebird
嗯,promise 是原生 JavaScript 对象。所有这些库都是用户态实现。例如,如果我们看一下 bluebird,它有:
.catch,这样可以确保你不会误抓程序员的错误。.some.any.map.filter等,可以轻松处理集合。.reflect 和承诺的同步检查。throwing 在 then 处理程序中时,它不会吞下错误。 所以在 tl;dr; :
现在,您是否应该使用它取决于您 - 包含库总是有开销 - 作为核心贡献者,我有偏见。
【讨论】:
我不能说 Q,但 Bluebird 比原生 Promises 快很多,并且在原生 Promise 之上提供了一堆额外的功能。
这与人们使用lodash 的原因相同,尽管多年来一直使用[].map()。
此外,Bluebird 比原生的 Promise 实现具有更好的浏览器支持。
不过,您通常只在服务器上使用 Bluebird。额外的功能和速度不值得用户下载额外的库。
【讨论】: