【发布时间】:2016-02-26 02:36:38
【问题描述】:
在您看到console.log(authors) 的外观接近尾声时,该数组不断地覆盖自身。这个循环的异步部分通常在循环之外。我这样做是为了调试为什么我得到一个充满相同用户名的大数组,而不是一个充满一系列不同用户名的数组的原因。这是我的代码:
while (i >= 0) {
var search = User.find({'twitter.id' : collected[i].author});
search.limit(1);
searches.push(function(cb) {
search.exec(function (err, hold){
if (err) cb(err, null);
else {
cb(null, hold[0].twitter.username);
}
});
});
i = i - 1;
async.parallel(searches, function( err, authors) {
if ( err ) return console.error( err );
else {
console.log(authors);
}
});
}
这些是我得到的结果:
这是漫长的一天,我不太清楚自己哪里出错了。
【问题讨论】:
-
你的逻辑不应该在
User.find的回调函数中吗?如User.find({'twitter.id':collected[i].author}, function(user) { /* logic */ }); -
async.parallel不应该在 while 循环之外吗? -
@epascarello:“这个循环的异步部分通常在循环之外。我这样做是为了调试原因”
-
@nathanleung 我事先准备好了查询,它在执行时仍然以相同的方式工作。
标签: javascript arrays node.js asynchronous