关于这种情况我的逻辑该如何写?
发布于 9 年前 作者 im-here 4592 次浏览 最后一次编辑是 8 年前 来自 问答

代码如下: 555.jpg

20 回复

试试async.while

@sayfly 好,谢谢。表示还没用过async,我去查查用法。

能eventproxy .all来处理

@suntopo 这个eventproxy 需要加载模块吗?

@huangshaohui 有具体用法地址吗?

@imhered

你要把读取数据库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 能大概说下全局会有什么后果吗=,=,谢谢!

@alsotang 好吧=。=

用async就好了。但是如果这种操作比较普遍代码就会爆炸的。看系统中这种操作是否比较普遍,如果普遍,建议封装成一个事件类来处理比较好的。

var helperClass = new HelperClass();
helperClass.run(FuncA).run(FuncB);
helperClass.on('FuncADone',callback);
helperClass.on('FuncBDone',callback);
helperClass.on('AllDone',callback);
回到顶部