gpt4 book ai didi

javascript - 在foreach中请求api

转载 作者:行者123 更新时间:2023-12-03 07:52:56 24 4
gpt4 key购买 nike

我有一个数组数据,我使用request查询一个api。在每次响应所发出的请求后执行回调。然而,这样做时,我最终会对数组中的所有项目发起并行请求。这是我正在做的事情:

exports.getData = function(arr, cb){
arr.forEach(function(data){
var query = {
//some data here
};
request({
url: 'http://x/y',
json: query,
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
}, function(error, res, body){
if (error){
console.log(error);
} else{
cb(res.body);
}
});
});
};

我想在上面的代码中将setTimeOut设置为x秒。我应该在每次请求后实现天真的延迟吗?还是别的什么?

最佳答案

更新:并行请求改为系列请求。

您应该使用一系列请求。使用async模块。见下文

exports.getData = function(arr, cb){

// make an array of function
var funcArray = [];

arr.forEach(function(data){
var query = {
//some data here
};

funcArray.push(function(callback){
request({
url: 'http://x/y',
json: query,
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
}, function(error, res, body){
// 5 second interval for each request
setTimeout(function(){ callback(error, body); }, 5000);
});
});
});


// now run all tasks on series
async.series(funcArray,function(err, result){

// now you will get result for all request

// handle error
// do what ever you want with result
});
}

关于javascript - 在foreach中请求api,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34930436/

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