node.js - 关于async和promise的选择
ringa_lee
ringa_lee 2017-04-17 11:11:01
[Node.js讨论组]

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

ringa_lee
ringa_lee

ringa_lee

全部回复(5)
PHPz

从个人的使用情况来看:

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

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

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

天蓬老师

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

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

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

黄舟

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

ringa_lee

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

大家讲道理

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

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

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号