6

有人可以帮我理解在 ES6 Harmony 中使用 Koa.js 和 Bluebird.js 之间的区别。具体怎么做

co( function * () {
  //stuff
} );

相比于,

Promise.coroutine( function * () {
  //stuff
} );

看来 Koa 应该使用 Bluebird 而不是重新创建轮子。有什么不同?

4

2 回答 2

2

现在不同的是,Koa 允许产生的不仅仅是承诺。

然而,正在添加一个功能,它不仅允许产生回调、thunk 等,还允许产生任何你想到的任意东西。蓝鸟也是最快的。所以在这个版本之后,koa 确实应该只是使用 bluebird。

https://github.com/petkaantonov/bluebird/issues/131#issuecomment-36975495

于 2014-03-07T08:10:24.530 回答
2

co有一个使用 Bluebird 的拉取请求。那里的评论应该使某些事情更清楚。co 依赖于 0.11 中提供的原生 V8 Promises 功能,而 Bluebird 也旨在在 0.10 中正常工作。您可以在低于 0.11 的版本中使用 co,但 Bluebird 会是更好的选择。在该链接中,您可以看到基准测试表明 co 并不比 Bluebird 慢,因此该论点是不正确的。

另外,它只有 300 行代码,坚持 KISS 通常是一个好习惯。所以它不是重新创建轮子。它正在减肥。您可以在几分钟内阅读代码并了解它的作用。我花了一个小时通读 Bluebird API 文档。还提到 V8 实现已损坏,因此 Bluebird 可能会暂时使用。

于 2014-07-17T12:42:19.560 回答