你们写 js 各种回调也是这么一层一层吗?

2014-05-07 16:01:40 +08:00
 liushuaikobe
新手一个,写node各种异步啊。。于是就有了这样的代码出现:

https://gist.github.com/liushuaikobe/6b4db6c929ec0440ab9a

这种情况下该怎么写比较好啊,求轻喷
5176 次点击
所在节点    Node.js
33 条回复
rails3
2014-05-07 16:05:57 +08:00
eventproxy
liushuaikobe
2014-05-07 16:09:02 +08:00
@rails3
竟然是朴灵大大写的。。赞,这就去试试~
jsonline
2014-05-07 16:11:09 +08:00
用具名函数替换匿名
bingdian
2014-05-07 16:15:55 +08:00
subpo
2014-05-07 16:17:06 +08:00
正常的很,es6有解决方案,这些都是js的原生方式,没必要用什么特别的库
liushuaikobe
2014-05-07 16:23:31 +08:00
@subpo
可能还不大适应这种写法,看些来有点别扭
akfish
2014-05-07 16:25:27 +08:00
每次看到这种代码,就会脑补开唱:
如果你愿意
一层一层一层的
剥开我的心
你会鼻酸
你会流泪
jia0
2014-05-07 16:27:34 +08:00
@akfish 赞!
undozen
2014-05-07 16:29:28 +08:00
callbackhell.com

简单解决:给回调命名
优雅解决:promise
liushuaikobe
2014-05-07 16:32:06 +08:00
@akfish
眼泪掉下来。。
akinoniku
2014-05-07 16:32:29 +08:00
我用async
liushuaikobe
2014-05-07 16:32:41 +08:00
@undozen
赞!
liushuaikobe
2014-05-07 16:43:09 +08:00
@undozen
给函数命名确实能让代码看起来舒服很多,除了命名本身带给人的烦恼(不知道取什么名字好)。。
chemzqm
2014-05-07 16:43:54 +08:00
Promise和async的API记不住,我用自己写的 https://github.com/chemzqm/parallel 没几行代码,测试100%覆盖,客户端通用
paloalto
2014-05-07 16:59:55 +08:00
之前用过这个: https://github.com/chemdemo/node-stepify

写起来像这样的:

tyzc
2014-05-07 17:05:53 +08:00
支持promise,这是个非常优雅的解决方法。
Actrace
2014-05-07 17:14:12 +08:00
既然习惯函数式编程,就不要用回调特性嘛。。。
bolasblack
2014-05-07 17:17:48 +08:00
promise 已经被选为 ES6 里的解决方案
async 的 waterfall 也非常好用

两个都可以试用一下,然后挑一个自己最喜欢的
andyhu
2014-05-07 17:25:07 +08:00
async性能好一点,promise更优雅点,不过将来es6的generator是大势所趋,可以用下tj写的的co
没有装0.11版本的同学也可以考虑用facebook的regenerator模仿下es6的generator特性
fundon
2014-05-07 17:41:21 +08:00
Next generator 是趋势

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/111499

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX