gpt4 book ai didi

node.js - Nodejs 识别异步任务的输出

转载 作者:太空宇宙 更新时间:2023-11-04 00:39:05 25 4
gpt4 key购买 nike

我是nodejs新手,我正在使用请求nodejs api发出多个get请求,这样,我无法弄清楚特定请求的输出。如何单独识别每个请求的响应?我正在使用 for 循环发送多个请求。如果我使用递归,它会再次变得同步,我只需将请求与过于异步的响应分开。这可能吗?

在下面的代码中,变量“i”被最后一次迭代替换。

var list = [ 'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%20Mobiles%20with%20best&phrase2=Mobiles%20with%20best',
'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%2520Mobiles%2520with%2520best&phrase2=what%20is%20a%20processor']

function ss(list){
for(var i in list) {
request(list[i], function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log( i + " " +body);
}
})
}
}

最佳答案

您可以使用async library执行异步请求。具体来说,您可以使用 async.eachasync.eachSeries

两者之间的区别在于,each 将并行运行所有请求,就像 for 循环一样,但会保留上下文,而不是eachSeries 它将一次运行一个请求(第二次迭代仅在您调用第一个迭代的回调函数时才会开始)。另外 - 对于更具体的用例还有其他选项(例如 eachLimit)。

使用each的示例代码:

var list = [ 'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%20Mobiles%20with%20best&phrase2=Mobiles%20with%20best',
'http://swoogle.umbc.edu/SimService/GetSimilarity?operation=api&phrase1=%2520Mobiles%2520with%2520best&phrase2=what%20is%20a%20processor']

function ss(list){
async.each(list, function(listItem, next) {
request(listItem, function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log( listItem + " " +body);
}

next();
return;
})
},
//finally mehtod
function(err) {
console.log('all iterations completed.')
})
}

关于node.js - Nodejs 识别异步任务的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37662877/

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