gpt4 book ai didi

javascript - 如何按照发送请求的顺序将获取响应数据分配给数组

转载 作者:行者123 更新时间:2023-12-01 03:19:58 25 4
gpt4 key购买 nike

我在 for 循环中有一个rest.get 请求,该请求发送大约 20 个查询(基于每次更改查询的先前请求的数据)。我的问题是,它似乎完全运行了 for 循环,然后查询异步运行,并以最快而不是连续返回的数据进行响应。如果我在 .end 函数内 console.log forloop 的索引,则在 forloop 完成之前它是未定义的,然后它就是最终的数字(即使它全部在 for 循环内)。我试图按照发送请求的相同顺序保存(推送到数组)数据,这样我就可以将数据与我打印出来的先前获取响应列表进行匹配。有没有办法按照我发送请求的顺序将我的响应数据分配给数组,而不是先到先服务?

// this function is being called inside the previous query 
function carData(req, res) {

var carNameJson = [];
var resultToJson = [];

//singleCars.length is defined in a previous query and is an array of car IDs
for (var index = 0; index < singleCars.length; ++index) {
//Grab each individual car ID and concatinate it into a Query
var carNames = singleCars[index];
var carQuery = "https://queryinfo";
var finalSingleQuery = "carQuery + carNames";

// puts the data into an array of JSON objects
carNameJson = {
carID: carNames
};

// result is a global variable assigned as an empty array
// it list all the car IDs in a JSON format
result.push(carNameJson);

rest
.get(finalSingleQuery)
.proxy("http://proxyinfo")
.end(function(resp) {
resultToJson = {
carInfo: resp.body
};
// resultInfo is a global variable assigned as an empty array
resultInfo.push(resultToJson);
return resultToJson;
});
}
}

这段代码一切正常,但它给我的数据是乱序的,所以我无法将汽车信息与汽车 ID 列表相匹配。我是节点新手,所以我可能做错了。任何帮助将不胜感激!

最佳答案

您可以使用索引变量来确定存储响应的位置。为此,您必须确保 index 变量是 for 主体的本地变量,您可以使用 let (而不是 var ):

for (let index = 0; index < singleCars.length; ++index) {

// ...

// store directly at the correct index:
resultInfo[index] = resultToJson;

您可能还想知道何时获得所有结果。您可以在分配给resultInfo[index]之后使用此条件来执行此操作:

    if (resultInfo.filter(Object).length === singleCars.length) {
// maybe call a callback here.
}

关于javascript - 如何按照发送请求的顺序将获取响应数据分配给数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45288075/

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