Q,Bluebird和Async有什么区别?

时间:2015-12-13 16:13:39

标签: node.js concurrency promise q bluebird

我开始研究管理node.js应用程序流程的不同方法,我似乎无法找到这个问题的令人满意的答案。

Q,Bluebird和Async之间的区别是什么?我应该将它用于什么目的?

1 个答案:

答案 0 :(得分:2)

Q和Bluebird是承诺库。它们为没有内置承诺的环境(例如旧版浏览器)添加了承诺功能,并为已经承诺的环境(特别是Bluebird)添加了新的承诺功能。 Bluebird试图遵循并扩充ES6承诺标准,而Q使用自己的API。这些库中的任何一个都可用于帮助您管理和协调异步操作。

Async是一个用于管理异步操作的库,它不基于promises的使用或设计。

我建议如果决定是否使用Async或Bluebird / Q,首先要确定是否要使用promises。如果是,您可以决定哪个库更符合您的需求Bluebird或Q.如果不是,那么Async就是您的选择。

在我看来,由于Javascript中的承诺已在ES6中标准化,我认为我们将看到越来越多的外部API转向承诺,它将成为在未来许多情况下与异步操作接口和管理异步操作的实际方式。此外,它捕获和传播异步错误(包括异步回调中抛出的异常)的能力在复杂的异步流中确实非常有价值。