gpt4 book ai didi

javascript - 数组异步问题

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

我被指示使用 async模块,但我不太确定如何使用瀑布来解决我的问题。

我的原始代码存在异步问题。

        var Image    = require('./models/image');
var User = require('./models/user');

var query = Image.find({});

query.limit(10);
query.sort('-date')

query.exec(function (err, collected) {
if (err) return console.error(err);
var i = 0;
var authors = [];

while (i < 8) {
var search = User.find({'twitter.id' : collected[i].author});


search.exec(function (err, user){
if (err) return console.error(err);

var result = (user[0].twitter.username);
authors.push(result);
});

i = i + 1;
}
}

console.log(authors);

我希望authors数组保存所有找到的用户名。但是,当最后一个 console.log() 调用返回“[]”时

最佳答案

因此,您希望首先等待所有搜索完成。您应该将所有异步调用放入一个数组中,然后使用异步库将它们链接在一起(瀑布)或同时执行(并行)。并行往往执行“更快”:

var searches = [];
while (i < 8) {
var search = User.find({'twitter.id' : collected[i].author});
searches.push(function(cb) {
search.exec(function (err, user){
if (err) cb(err, null);
else cb(null, user[0].twitter.username);
});
});
i++;
}
async.parallel(searches, function( err, authors ) {
if ( err ) return console.error( err );
console.log(authors);
// Authors only defined here.
// TODO: More code
});
// Authors not defined here.

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

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