gpt4 book ai didi

javascript - 对于在 NodeJS 中遍历数组但 console.log 不会打印到终端的循环?

转载 作者:行者123 更新时间:2023-11-30 17:25:29 25 4
gpt4 key购买 nike

我正在使用 Node.JS 循环访问一些数据并将该数据推送到一个数组。但是,console.log 似乎没有显示我所做的任何更改。我希望能够在函数完成向它推送数据后处理 twitter_ids 中的数据。

我想知道是否是因为对 Node.JS 的异步特性的误解?

var twitter_ids = []

function sendResults (twitter_ids){
return function(data){
for (var num in data['results']) {
T.get('users/lookup', { screen_name: data['results'][num]['twitter_id'] }, function(err, data, response) {
twitter_ids.push(data[0]['id']);
});
}
console.log(twitter_ids);
}
}

sunlightResults.call(sendResults(twitter_ids));

最佳答案

您的问题是您在 T.get() 检索到任何数据之前打印到控制台。

如果您需要等到多个回调被调用(根据您的示例),我通常使用辅助库函数,如 async.eachSeries()。如果你想自己做,递归之类的东西可以是你的 friend ,但可能有点令人费解:

function lookup(list, index, output, finished) {
if(index >= list.length) { return finished(output); }

var num = list[index];
T.get('users/lookup', { screen_name: data['results'][num]['twitter_id'] }, function(err, data, response) {
output.push(data[0]['id']);
lookup(list, index+1, output, callback);
});
}

var outputList = [];
lookup(data['results'], 0, outputList, function(output){
console.log(output);
});

我相信这里的一些天才可以使它变得更好,更具可读性,但这只是一个 super 简单的例子。

关于javascript - 对于在 NodeJS 中遍历数组但 console.log 不会打印到终端的循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24376532/

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