gpt4 book ai didi

javascript - 异步数组问题

转载 作者:行者123 更新时间:2023-12-03 08:17:24 26 4
gpt4 key购买 nike

在控制台结尾处看到 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);
}
});
}

这些是我得到的结果:

results

这是漫长的一天,我不太明白自己哪里出了问题。

最佳答案

问题是,在调用任务函数 (function(cb) { ... }) 时,search 已经具有不同的值,该值最后一次迭代的。所有任务都引用相同的搜索变量,因此执行相同的搜索。

这是典型的“循环内闭包”问题。

您需要为每次迭代创建范围。请参阅JavaScript closure inside loops – simple practical example寻求解决方案。

关于javascript - 异步数组问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33880351/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com