我怎么能等待谷歌远程呼叫返回我的结果之前继续

how can i wait for a google distance call to return my result before carrying on

本文关键字:我的 返回 结果 继续 呼叫 等待 怎么能 谷歌 程呼叫      更新时间:2023-09-26

我正试图找出一种启动谷歌距离矩阵调用的方法,我需要在我可以继续我的程序执行之前返回结果,使用javascript和jquery。如果有人能帮忙,请帮忙代码示例的想法。我有多条腿来跑远。即:第一段起点和终点第二回合的起止点第三段起点和终点我要做的是计算不同腿之间的旅行时间,所以第一赛段完成后,车手需要开始第二赛段。通过调用来获取第一段终点和第二段起点之间的距离。然后进行下一个计算。我已经有腿的距离,所以,我的代码如下:

                var driving = 0;
            calculateDistances();
           code to work with the calculatedistances() result here

    function calculateDistances() {
 //alert(origin+','+destination);
 var service = new google.maps.DistanceMatrixService();
 service.getDistanceMatrix(
 {
  //set origin and destination points
  origins: [origin],//, origin2],
  destinations: [destination],          
  travelMode: google.maps.TravelMode.DRIVING,
  unitSystem: google.maps.UnitSystem.METRIC,
  avoidHighways: false,
  avoidTolls: false
  }, callback);
}
function callback(response, status) {
  if (status != google.maps.DistanceMatrixStatus.OK) {
     alert('Error was: ' + status);
  } else {
   var origins = response.originAddresses;
   var destinations = response.destinationAddresses;
   var outputDiv = '';
   for (var i = 0; i < origins.length; i++) {
     var results = response.rows[i].elements;
     //addMarker(origins[i], false);
     for (var j = 0; j < results.length; j++) {
        driving = parseFloat(results[j].distance.text); // driving is a script wide variable to hold the return value
     }
    }
}

}

向calculateDistances()函数传递一个回调,您可以通过传入callback并在方法末尾使用callback()执行它来实现。为清晰起见,将函数调用为其他名称。

var driving = 0;
calculateDistances(callbackFunction);
function calculateDistances(callback) {
 var service = new google.maps.DistanceMatrixService();
 service.getDistanceMatrix(
 {
  //set origin and destination points
  origins: [origin],//, origin2],
  destinations: [destination],          
  travelMode: google.maps.TravelMode.DRIVING,
  unitSystem: google.maps.UnitSystem.METRIC,

avoidHighways: false,
  avoidTolls: false
  }, callback());
}
function callbackFunction(response, status) {
  if (status != google.maps.DistanceMatrixStatus.OK) {
}
//etc
}