文件A.JS 有一个方法 A.business(); 文件B.JS 有一个方法 B.findById(id);
在A 中调用了 B.findById() 来查询数据。
因为是异步的,所以在 A 中:
channel.on('success’, function() { // 查询到数据了,操作… });
这是A 中的,没问题,但是在B中就有冲突了。
在B中 查询到数据后,有两个操作: 1、返回数据 2、触发事件
现在问题来了,在B中应该怎么处理这两个操作呢? 1、返回数据 这样直接return了,后面就没了,事件也没法触发了 2、触发事件 这样A中的事件处理就开始运行了,而真正的结果可能还没有返回过去
请问这样的情况,应该怎么处理比较好。
是的。 是返回数据和触发事件这里有冲突,昨天回去的路上我突然想到,这样的问题人家写API的时候不可能没有想到的,一定有解决的办法,然后我查了下,发现这个函数在触发事件的时候还可以传参。 不过多谢你回答我的问题了。 昨天下午搞这个的时候思维被缠在里面了,直到回家的路上才跳出来,就想明白了。
emitter.emit(event, [arg1], [arg2], […]) 用这个,问题已经解决了。
嗯,写成异步的。如果用同步的话,JS的这一大特性就没了。而用异步,在触发事件的时候能够很好的处理需要传输的数据,那就没有问题了。
避免的话,真没这个必要,JS的核心就是异步编程与事件循环机制,如果硬生生要写成同步的,我们知道NODEJS是单线程的,而如果还要写成同步的,说实话,这种效率。。。
Don’t use return , you can use async
control .
签名: 交流群244728015 《Node.js 服务器框架开发实战》 http://url.cn/Pn07N3