素材牛VIP会员
关于async和promise的选择
 一***句  分类:Node.js  人气:670  回帖:5  发布于6年前 收藏

菜鸟有一个疑惑,是关于nodejs异步操作库的选择。
使用过async,也粗略使用过q.js和when.js
以上两者在使用过程中个人感觉区别不大,但哪一种方式更好一点?
哪位大神能从深层次一些解惑一下么

 标签:node.js

讨论这个帖子(5)垃圾回帖将一律封号处理……

Lv3 码奴
被***师 学生 6年前#1

从个人的使用情况来看:

Async 更倾向于对 Js 回调的优化。序列化的操作,并行的操作等都需要封装到一起去执行,统一设定一个回调。拆分逻辑非常不方便。

Promise 方式的 Q 更像是一种创新,支持常用的所有流程模型,对逻辑的分离也非常方便,不需要你去特定的封装。而且结合 NodeJs 和 Js 的回调规范,有内置的支持。而且还支持通知,延迟,性能也不错,对于 JS 做的事情来说简直就是绝配,如果你真正用懂了 Promise,你也许会欲罢不能

推荐一篇文章:Why I am switching to promises?

Lv4 码徒
青***e Linux系统工程师 6年前#2

我两个都用,区分的方法为:
1. 如果问题本身是对容器或集合的异步操作,则使用 async。
2. 如果问题偏重于传统的顺序流程+异常处理,则用 q。

q 最大的好处是能够捕获异步流程中异步,使得代码的健壮性比较强。async 和underscore 等函数式编程库结合时,比较容易发挥函数式编程的优势。所以两者各有适合的领域。不过如果你同时混用 async 和 q,那么需要逻辑非常清晰才行。

Lv6 码匠
ka***13 JAVA开发工程师 6年前#3

个人倾向promise,和CommonJS沾上边对以后多少是个好事。
promise甚至已经快要成为浏览器库的一部分了,虽然不指望它兼容性,但这组核心API本身基本上是板上钉钉的事情了。

Lv5 码农
最***哥 JS工程师 6年前#4

个人觉得async和q.js是两种不同的工具,虽然都是为了方便异步操作,但针对的方向还是不同的。

说的简单点,q.js适合需要传值的情况,或者框架中。

而async适合处理一系列按照特定顺序执行的复杂操作。

Lv6 码匠
bi***am 技术总监 6年前#5

后端 Node.js 的话, 就不用选择了, 未来是 generator 的天下 http://cnpmjs.org/package/co

 文明上网,理性发言!   😉 阿里云幸运券,戳我领取