JavaScript:函数函数的返回值未定义

时间:2018-05-06 21:25:31

标签: javascript google-maps

我尝试并搜索了许多问题,但无法解决此问题。我实际上想要从函数的函数获得计算的距离值,但是在第一次执行时它返回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);

}

1 个答案:

答案 0 :(得分:0)

正如你所看到的,directionsService.route接受请求和一个将异步执行的函数(它基本上是一个 promise ,你传递的函数作为第二个参数将被执行一次Google服务完成了您的请求。)

在执行该函数之前,程序继续执行(因此它转到alert行)。此时,您可能或可能没有Distance变量的计算值(取决于前一个函数的执行)。

为了确保您拥有directionsService.route回调中的值,您可以在该函数中移动警报,或者您可以调用另一个函数(由您定义),将Distance作为一个参数。