Co.js and bluebird.js — what's the difference?

梦想与她 提交于 2020-01-01 05:16:31

问题


Could someone help me understand the differences between using Koa.js and Bluebird.js with ES6 Harmony. Specifically, how does

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

compare to,

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

It just seems Koa should be using Bluebird and not recreating the wheel. What's different?


回答1:


For now the difference is that Koa allows yielding more than just promises.

However a feature is being added that allows not only yielding callbacks, thunks etc but any arbitrary thing that comes to your mind. Bluebird is also the fastest. So after this version koa should be just using bluebird indeed.

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




回答2:


There is a pull request on co to use Bluebird. The comments there should make certain things more clear. co relies on the native V8 Promises feature provided in 0.11 while Bluebird aims to work well in 0.10 too. You can use co in versions below 0.11 but then Bluebird would be a better option. In that link, you can see that the benchmarks show that co is not slower than Bluebird, so that argument is incorrect. Plus, it is only 300 lines of code, sticking to KISS is generally a good practice. So it is not recreating the wheel. It is slimming it down. You can read the code and understand what it does in few minutes. It took me an hour to read through the Bluebird API doc. There is also a mention that the V8 implementation is broken, so Bluebird may be used for an interim period.



来源:https://stackoverflow.com/questions/22134167/co-js-and-bluebird-js-whats-the-difference

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!