Javascript 等待提升服务请求回调

Javascript 等待提升服务请求回调,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,我正在尝试用GoogleMapAPI构建一个小应用程序,因为这是我的第一个javascript应用程序(我已经知道这种语言,但我几乎从未使用过),所以我遇到了一个小问题 我试图使用ElevationService获取与标记相关的高程,以便将两个数据({marker,elevation})推送到一个数组中。但是,在调用getElevationForLocations的回调函数之前,我将数据推送到数组中的那一行被命中,导致推送未定义的数据(高程) 我想我应该使用一个异步函数,以便在推送数据之前等待回

我正在尝试用GoogleMapAPI构建一个小应用程序,因为这是我的第一个javascript应用程序(我已经知道这种语言,但我几乎从未使用过),所以我遇到了一个小问题

我试图使用ElevationService获取与标记相关的高程,以便将两个数据({marker,elevation})推送到一个数组中。但是,在调用
getElevationForLocations
的回调函数之前,我将数据推送到数组中的那一行被命中,导致推送未定义的数据(高程)

我想我应该使用一个异步函数,以便在推送数据之前等待回调执行,但我不知道如何使用它

有人能给我一些指示吗

非常感谢, 梅塔

附言:这是我的剧本

    var markers = [];

    function initMap()
    {
        var map = new google.maps.Map(document.getElementById('map'), {
            zoom: 4,
            center: {lat: -25.363882, lng: 131.044922 },
            mapTypeId: 'terrain'
        });

        var elevator = new google.maps.ElevationService;

        map.addListener('click', function(e) {
            addMarker(e.latLng, map, elevator);
        });
    }

    function getElevation(location, elevator) {
        var elevation;
        // Initiate the location request
        elevator.getElevationForLocations({
            'locations': [location]
        }, function(results, status)
        {
            if (status === 'OK') {
            // Retrieve the first result
                if (results[0]) {
                    return results[0].elevation;
                }
            }
        });
    }

    function placeMarkerAndPanTo(latLng, map) {
        var marker = new google.maps.Marker({
            position: latLng,
            map: map
        });
        map.panTo(latLng);
        return marker;
        //markers.push(marker);
    }

    function addMarker(location, map, elevator)
    {   var marker = placeMarkerAndPanTo(location, map);
        var elevation = getElevation(location, elevator);

        markers.push({marker, elevation});
    }

下面是代码的简化版本,使用了我在注释中描述的内容

var标记=[];
var电梯=新的google.maps.ElevationService;
var映射;
函数initMap(){
map=new google.maps.map(document.getElementById('map'){
缩放:4,
中心:{
纬度:-25.363882,
液化天然气:131.044922
},
mapTypeId:'地形'
});
map.addListener('click',函数(e){
添加标记(如latLng);
});
}
功能添加标记(位置){
电梯。getElevationForLocations({
“位置”:[位置]
},功能(结果、状态){
如果(状态=='OK'){
//检索第一个结果
如果(结果[0]){
var marker=new google.maps.marker({
位置:位置,,
地图:地图
});
panTo地图(位置);
推({
马克:马克,
高程:结果[0]。高程
});
控制台日志(标记);
}
}
});
}
google.maps.event.addDomListener(窗口'load',initMap)
#地图{
高度:200px;
}

您正在使用异步函数。这就是为什么
getElevationForLocations
具有回调函数的原因。所以你应该用另一种方法:调用服务,在回调函数中,创建你的标记并将其推送到带有高程的数组中。非常感谢^^^它非常简单,我已经知道了这个方法,但我就是记不起来了^ ^