1
leojoy710 2014-05-11 00:12:40 +08:00 1
promise的最直观的好处是, 可以拿到一个"返回值"...
|
2
rekey 2014-05-11 02:13:02 +08:00 1
个人感觉async和promise不相上下。eventProxy用不惯。可能是实在不知道怎么命名。
|
3
andyhu 2014-05-11 02:18:25 +08:00 1
async执行效率好些,promise更方面和强大些
|
4
bolasblack 2014-05-11 16:30:45 +08:00 1
嗯,反正 ES6 会自带一个 Promise 对象,所以 Promise 多了解一些应该没有坏处,剩下的你哪个用着比较习惯就用哪个
|
5
coolicer 2014-05-15 10:09:43 +08:00
promise对应的是Q那个库?
|
6
andyhu 2014-05-18 04:31:09 +08:00 1
@andyhu 更新下观点,最近用async又做了很多东西,发现async功能也非常强大,只是可能多数时候promise更直观点,所以都差不多吧,不过也是不习惯event proxy
|
7
andyhu 2014-05-19 06:06:56 +08:00
再更新下,又有些新的发现,看下下面的performance对比图吧,看了下bluebird和ES6 promise polyfill不错,语法都大同小异,但性能略微有差别,代码在这个测试里也有
http://jsperf.com/promise-comparisons/105 另外这篇文章介绍了各种不同的方式也有各自优劣对比 http://blog.namangoel.com/dealing-with-callback-hell 文章里最后介绍的Reactive programming也有点意思 |
8
andyhu 2014-05-19 06:07:31 +08:00
|
9
andyhu 2014-05-19 06:17:44 +08:00
再次更新:
之前讲的async效率好些,是针对q promise和绝大多数promise的实现,但是刚看了hacker news上的评论, 有人测试了下好像bluebird比async还快,内存占用也更低。另外我用async做一个比较复杂的东西的时候,发现虽然功能很强,但还是很麻烦代码会变得不容易理解和修改,很不直观。如果promise执行效率比async快的话,还是推荐promise。以后ES6 promise也是内置的了,代码迁移会方便很多。而async方式要想重构代码会比较麻烦。 https://news.ycombinator.com/item?id=6494622 file time(ms) memory(MB) promiseishBluebird.js 1076 76.08 async.js 2634 113.79 promiseishKew.js 2654 123.50 promiseishQ.js 56508 804.21 |
10
andyhu 2014-05-19 06:52:54 +08:00 1
再次更新:
https://github.com/normalize/mz 这个模块用bluebird包装了很多node自带的模块,另外可以结合generator使用把异步调用写的和同步一样简洁直观,不用去管node本身的实现直接拿来就用,很不错。基于蓝鸟的速度,性能也不会差哪去,觉得楼主可以试试。用之前可以看看bluebird文档 |
12
andyhu 2014-05-19 10:30:57 +08:00 1
@WildCat
刚写了个测试bluebird并发和顺序执行混合一起的一个脚本,感觉用起来很简单,大赞,看来以后要彻底抛弃async了 https://gist.github.com/andyhu/c0b3e2c262ad3a17ec3b 如果电脑里有fiddler,开启fiddler后可以看到这些请求的次序 |