Javascript 查找对象id';来自无序Google API响应的

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请求的响应

我正在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