Q、Bluebird 和 Async 之间有什么区别?
What's the difference between Q, Bluebird, and Async?
我开始研究管理 node.js 应用程序流程的不同方法,但我似乎找不到对这个问题的满意答案。
Q、Bluebird 和 Async 之间有什么区别,我应该将其用于什么目的?
Q 和 Bluebird 是 promise 库。他们向没有内置承诺的环境(例如旧浏览器)添加承诺功能,并向已经具有承诺的环境(特别是 Bluebird)添加新的承诺功能。 Bluebird 试图遵循和增强 ES6 承诺标准,而 Q 使用自己的 API。这些库中的任何一个都可用于帮助您管理和协调异步操作。
Async 是一个用于管理不基于 promises 的使用或设计的异步操作的库。
我建议,如果决定是使用 Async 还是 Bluebird/Q,您首先要决定是否要使用 promises。如果是,您决定哪个库更能满足您的需求,Bluebird 或 Q。如果不是,那么 Async 是您的选择。
在我看来,由于 Javascript 中的 promises 已经在 ES6 中标准化,我认为我们将看到越来越多的外部 API 转向 promises,它将成为事实上的接口方式在未来的许多情况下使用和管理异步操作。此外,它捕获和传播异步错误(包括在异步回调中抛出的异常)的能力在复杂的异步流程中非常非常有价值。
我开始研究管理 node.js 应用程序流程的不同方法,但我似乎找不到对这个问题的满意答案。
Q、Bluebird 和 Async 之间有什么区别,我应该将其用于什么目的?
Q 和 Bluebird 是 promise 库。他们向没有内置承诺的环境(例如旧浏览器)添加承诺功能,并向已经具有承诺的环境(特别是 Bluebird)添加新的承诺功能。 Bluebird 试图遵循和增强 ES6 承诺标准,而 Q 使用自己的 API。这些库中的任何一个都可用于帮助您管理和协调异步操作。
Async 是一个用于管理不基于 promises 的使用或设计的异步操作的库。
我建议,如果决定是使用 Async 还是 Bluebird/Q,您首先要决定是否要使用 promises。如果是,您决定哪个库更能满足您的需求,Bluebird 或 Q。如果不是,那么 Async 是您的选择。
在我看来,由于 Javascript 中的 promises 已经在 ES6 中标准化,我认为我们将看到越来越多的外部 API 转向 promises,它将成为事实上的接口方式在未来的许多情况下使用和管理异步操作。此外,它捕获和传播异步错误(包括在异步回调中抛出的异常)的能力在复杂的异步流程中非常非常有价值。