Javascript 查找对象id';来自无序Google API响应的
我正在Node.js中编写一个后端API,但是最酷的特性是异步函数,它现在给我带来了一个新问题 我有一个名为Person的对象列表,其中包含ID、纬度、经度等信息。我只想根据它们到某个点(比如a点)的距离对它们进行排序 当我想循环遍历每个对象时,发出一个请求(我使用的是模块请求)。然而,由于它的性质,节点首先遍历所有对象,发送请求,而不等待回复。因此,当回复到来时,我无法理解哪个回复是针对哪个人的。即使当我通过Redis检查时,它以正确的顺序列出了他们的ID,但我看到GoogleAPI请求的响应并没有顺序。以下是我的代码,以便更好地理解Javascript 查找对象id';来自无序Google API响应的,javascript,node.js,google-maps,asynchronous,Javascript,Node.js,Google Maps,Asynchronous,我正在Node.js中编写一个后端API,但是最酷的特性是异步函数,它现在给我带来了一个新问题 我有一个名为Person的对象列表,其中包含ID、纬度、经度等信息。我只想根据它们到某个点(比如a点)的距离对它们进行排序 当我想循环遍历每个对象时,发出一个请求(我使用的是模块请求)。然而,由于它的性质,节点首先遍历所有对象,发送请求,而不等待回复。因此,当回复到来时,我无法理解哪个回复是针对哪个人的。即使当我通过Redis检查时,它以正确的顺序列出了他们的ID,但我看到GoogleAPI请求的响应
for(var i = 0;i < result.length;i++){
console.log("the iteration time: "+i);
tempObject = JSON.parse(result[i]);
console.log("\n I make the request for key: "+tempObject.ID);
request('http://maps.googleapis.com/maps/api/directions/json?origin='+tempObject.lat+
','+tempObject.lon+'&destination=' + targetLatitude + ',' + targetLongitude
+ '&sensor=false',
function (error, response, body) {
if (!error && response.statusCode == 200) {
console.log("Lat: "+tempObject.lat);
console.log("Lon: "+tempObject.lon);
console.log("key: "+list[counter]);
tempObj = JSON.parse(body);
counter++; //For loop end check
console.log("i: "+i);
duration = tempObj.routes[0].legs[0].duration.value;
console.log("Duration: "+tempObj.routes[0].legs[0].duration.value+"\n");
if(counter == result.length){
//end loop
}
}
});
}
for(变量i=0;i
我想声明我的代码没有任何问题。我就是找不到解决这个问题的方法:当Google Maps Direction API的响应没有排序时,我如何才能获得我的个人列表的id。循环为列表中的每个Person对象逐个发出请求,但是来自Google的响应不符合顺序,因此我无法获得他们的ID 我甚至想把对象放在一个列表中,然后通过检查API响应中的起始点lat和long,将它们与列表中的人进行比较,我可以确定谁的响应最先出现,但这也不起作用。有什么建议吗
注:如果你看到“键”这个词,它意味着用户的id。我使用的是Redis,所以我也倾向于使用“key” 您可以使用函数闭包将请求与响应关联起来 使用地理编码地址的示例:
谢谢您的回复。请详细解释一下好吗?