我尝试并搜索了许多问题,但无法解决此问题。我实际上想要从函数的函数获得计算的距离值,但是在第一次执行时它返回undefined
值,但是当我第二次执行时它返回正确的值。
var directionsService = new google.maps.DirectionsService();
var Distance;
// Calculate Distance
function calcRoute() {
var source = document.getElementById("txtSource").value;
var destination = document.getElementById("txtDestination").value;
var distanceInput = document.getElementById("distance");
var request = {
origin: source,
destination: destination,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
directionsService.route(request, function(response, status) {
if (status == google.maps.DirectionsStatus.OK) {
Distance = response.routes[0].legs[0].distance.value / 1000;
} else {
alert("Unable to find the distance via road.");
}
});
alert("if condition value is : " + Distance);
}
答案 0 :(得分:0)
正如你所看到的,directionsService.route
接受请求和一个将异步执行的函数(它基本上是一个 promise ,你传递的函数作为第二个参数将被执行一次Google服务完成了您的请求。)
在执行该函数之前,程序继续执行(因此它转到alert
行)。此时,您可能或可能没有Distance
变量的计算值(取决于前一个函数的执行)。
为了确保您拥有directionsService.route
回调中的值,您可以在该函数中移动警报,或者您可以调用另一个函数(由您定义),将Distance
作为一个参数。