【问题标题】:Callback function not working as expected回调函数未按预期工作
【发布时间】:2018-03-14 15:17:15
【问题描述】:

我在编写回调函数以从 google 方向 api 发出的异步请求中获取值时遇到困难,我需要在这里编写一个回调函数,该函数将为我提供异步请求完成的时间。我想自己做,但我只是不明白为什么它不工作,按照我在这个网站上看到的一些例子,这应该工作。

这是我的回调函数

function getTime(myVar){alert(myVar);}

调用回调函数的函数

function travellingTime(Origin, Destination, callback) {
    var myVar;
    var directionsService = new google.maps.DirectionsService();
    var request = {
        origin: Origin,
        destination: Destination,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };

    directionsService.route(request, function (response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            // Display the distance:
            //alert(response.routes[0].legs[0].distance.value + " meters");
            // Display the duration:
            //Time = (response.routes[0].legs[0].duration.value / 60);

            myVar = (response.routes[0].legs[0].duration.value / 60);
            callback(myVar);
        }
    });
}

按钮触发动作

<button onclick="travellingTime('portlouis','vacoas',getTime())">TSP</button>

警报时我仍然收到myVar 和undefined

【问题讨论】:

  • getTime 是函数本身(更准确地说,是指向函数的引用)。如果您添加(),您正在执行该功能。

标签: javascript function google-maps-api-3 asynccallback


【解决方案1】:

你正在调用getTime并传递结果,直接传递而不调用它。像这样(去掉这对括号)。

<button onclick="travellingTime('port louis','vacoas',getTime)">TSP</button>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-30
    • 2015-04-11
    • 2022-01-25
    相关资源
    最近更新 更多