代码如下:
试试async.while
@sayfly 好,谢谢。表示还没用过async,我去查查用法。
能eventproxy .all来处理
@suntopo 这个eventproxy 需要加载模块吗?
Promise.all()
@huangshaohui 有具体用法地址吗?
你要把读取数据库promise化,每次读取数据库,return一个promise。
在循环里,将每次读取数据库创建的promise插入到一个数组里去。 然后将上面的这个数组作为Promise.all()的参数,此时这个Promise.all方法返回一个新的promise。
var promises = []; for(…) { promise.push(…); } Promise.all(promises).then(function(data){ // 当执行到这里的时候,循环读取数据库的工作已经做完了,通过data可以取读取数据库返回的值 });
@huangshaohui 好的,谢谢!
果断使用async.while
@blackjack 问题已经解决了,我用的async.each。 不过我没看到有async.while啊,看了下github上文档里也只有whilst, doWhilst这2个。
@imhered async.map async.each都行吧
for (var i in xxx)
不要漏了 var
@alsotang 我好多时候都没写var,有什么影响吗?是不是不写var就是全局的了?
@imhered 对。注意编码细节啊。全局很坑的
@alsotang 能大概说下全局会有什么后果吗=,=,谢谢!
@imhered google
@alsotang 好吧=。=
用async就好了。但是如果这种操作比较普遍代码就会爆炸的。看系统中这种操作是否比较普遍,如果普遍,建议封装成一个事件类来处理比较好的。
var helperClass = new HelperClass();
helperClass.run(FuncA).run(FuncB);
helperClass.on('FuncADone',callback);
helperClass.on('FuncBDone',callback);
helperClass.on('AllDone',callback);