for(var i=0; i<10; i++){
//console.log(i);
var a = {seller_id : 1, order_id : 2};
console.log(i);
newAlready = new Already(a);
newAlready.save(function(err, doc){
console.log(doc);
});
}
我运行,但是只会插入执行一次newAlready.save,这是异步问题吗?谢谢!
回复 (16)
X
是,这样肯定不行!
Y
这种东西网上很多吧...用个闭包就可以搞定..
for(var i=0; i<10; i++){
//console.log(i);
(function (i) {
var a = {seller_id : 1, order_id : 2};
console.log(i);
var newAlready = new Already(a);
newAlready.save(function(err, doc){
console.log(doc);
});
})(i)
}
Y
引用 xiuxu123是,这样肯定不行!
请问怎么解决?
Y
引用 youxiachai这种东西网上很多吧...用个闭包就可以搞定..
试了下,不能解决,运行结果: 0 1 2 3 4 5 6 7 8 9 connected as id 156 9 [ { order_id: 2, seller_id: 1, _id: 53b24e9a48e957361684cfcb } ]
Y
引用 youxiachai这种东西网上很多吧...用个闭包就可以搞定..
@youqingkui
Already.save 是个异步方法吧..这样写应该没错吧. 查一下异常吧?
Y
引用 youxiachai这种东西网上很多吧...用个闭包就可以搞定..
@youxiachai 嗯,是mongodb的存储。
D
这里没有闭包,不需要,主要问题是mongoose,第一次成功了,后几次都失败了,doc是null所以显示不出来,你输出err试试
Z
使用async库,如果想本次循环结束再进行下次循环就使用async.whilst方法,如果要并行,就是用集合操作async.forEach
A
不会只执行一次吧,看代码应该是会执行10次的。
T
楼主,不是你这么干的吧,用async
R
我也用async模块
H
使用async promise 等同步模块吧~
M
肯定是newAlready.save自身的问题
A
代码问题吧!我循环插入几万条数据 都没出问题:https://gitcafe.com/zhaop_roc/AtlasSpider-3/blob/master/groupon/proxy/coupon.js 代码第113行,也是用的new 和 save
A
试试把回调去掉!
X
new Already(a) 中有异步操作吗 感觉还是异步的问题
参与回复
登录后即可参与回复。登录