CNode

关于这种情况我的逻辑该如何写?

问答
Iim-here发布于11 年前最后回复11 年前20 回复5522 浏览0 收藏

代码如下: 555.jpg

查看回复

回复 (20)

S
sayfly#2·11 年前

试试async.while

I
im-here#3·11 年前
引用 sayfly试试async.while

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

S
suntopo#4·11 年前

能eventproxy .all来处理

I
im-here#5·11 年前
引用 suntopo能eventproxy .all来处理

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

H
huangshaohui#6·11 年前

Promise.all()

I
im-here#7·11 年前
引用 huangshaohuiPromise.all()

@huangshaohui 有具体用法地址吗?

H
huangshaohui#8·11 年前
引用 im-here@huangshaohui 有具体用法地址吗?

@imhered

你要把读取数据库promise化,每次读取数据库,return一个promise。

在循环里,将每次读取数据库创建的promise插入到一个数组里去。 然后将上面的这个数组作为Promise.all()的参数,此时这个Promise.all方法返回一个新的promise。

var promises = []; for(..) { promise.push(..); } Promise.all(promises).then(function(data){ // 当执行到这里的时候,循环读取数据库的工作已经做完了,通过data可以取读取数据库返回的值 });

B
blackjack#11·11 年前

果断使用async.while

I
im-here#12·11 年前
引用 blackjack果断使用async.while

@blackjack 问题已经解决了,我用的async.each。 不过我没看到有async.while啊,看了下github上文档里也只有whilst, doWhilst这2个。

A
alsotang#14·11 年前

for (var i in xxx) 不要漏了 var

I
im-here#15·11 年前
引用 alsotangfor (var i in xxx) 不要漏了 var

@alsotang 我好多时候都没写var,有什么影响吗?是不是不写var就是全局的了?

I
im-here#17·11 年前
引用 alsotang@imhered 对。注意编码细节啊。全局很坑的

@alsotang 能大概说下全局会有什么后果吗=,=,谢谢!

I
im-here#19·11 年前
引用 alsotang@imhered google

@alsotang 好吧=。=

B
backsapce#20·11 年前

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

var helperClass = new HelperClass();
helperClass.run(FuncA).run(FuncB);
helperClass.on('FuncADone',callback);
helperClass.on('FuncBDone',callback);
helperClass.on('AllDone',callback);
参与回复
登录后即可参与回复。登录