大家在node环境中都怎么做异步代码的?
没有实际接触过大的nodejs工程代码,所以想看看大家平时都是怎么用的。
今天把一些基础的nodeschool.io的tutorial做了一下,异步相关的模式大概有四类,
- callback, 这个是最好理解的做法了,当一个event发生的时候(主要是io event),调用对应的callback去处理。最大的缺点是不直观,callabck hell难以维护,难以阅读。如果要combine多个io的结果,会很麻烦。
- async辅助的callback, 这种做法里,虽然还是callback的理念,但是通过async写把callback的依赖关系标准化,增加可读性。 试了一下tutorial里面的例子,代码还是难读。
- promise, 这个是我用的比较舒服的一种方法,我以前的很多project是java写就的,使用类似的类库(ListenableFuture)来处理异步依赖关系。
- Event Stream, 试了一下他的tutorial,整体的想法很好,有点类似golang的channel concept,跟python的generator的模式有点类似,不过还没有机会深入了解。如果一个逻辑同时依赖与两个或者多个IO输入,那么怎么处理这一类问题不是很清楚。
4 回复
楼主的标题,看了半天没弄明白啥意思
@119786155 是我自己没有写清楚,已经在原文上改了。
刚才粗粗简单翻了一下cnodejs自己的源代码,还是以callback为主。 javascript代码写起来比较快,简洁,不过感觉可读性和严谨程度比java系的代码要差一些。工程一旦上规模,共同开发的人多了以后,维护难读可能会加大。
归递调用流 cb + apply + call