循环查询时异步问题
发布于 8 年前 作者 yangzichen987046 3068 次浏览 来自 问答

if (docs) { db.collection(‘users’, function(err, collection){ docs.forEach(function (docs) { console.log(docs) collection.find({"_id":ObjectID(""+docs+"")}).toArray(function(err,itens){ if (err) { console.log(“err”) return callback(err); } console.log(itens[0].name) piclist.push(itens[0].name) if(piclist.length == docs.length){ callback(null, docs, total,piclist); } }); }) }); }

我已经得到docs是一个数组 QQ截图20160928160721.png 我去到user表里QQ截图20160928160819.png根据_id,取出对应的name, 输出结果为QQ截图20160928160919.png,为什么name和_id不对应,是不是哪里写错了,求大神给出修改方案啊!!!

5 回复

你用DOCS查name的那步操作是异步的,执行时会按顺序执行,返回的结果就不一定了。

docs foreach 里面的 docs 写成 doc吧。。。

data.forEach(docs=>{
	((docs)=>collection.find({"_id":ObjectID(""+docs+"")}).toArray(doSomething))(docs)
})

@Neil-UWA 闭包的变量持有作用是明显的,最好还是加个说明,这样好理解一些^_^

代码格式化一下好吗

回到顶部