javascript - 如何将变量传递给保持不变的异步回调函数?

标签 javascript google-maps asynchronous

我正在使用 Google Maps JS API 对某些地址进行地理编码,但我需要访问地理编码函数回调内的许多变量。地理编码器是一个异步函数。

我的代码如下:

for (var prop in markerData) {
    geocoder.geocode( { address: addressData }, function(results, status) {
        if (status == 'OK') {
            lat = results[0].geometry.location.lat();
            lng = results[0].geometry.location.lng();

            console.log(addressData);

            markerInfo = { 
                lat: lat, 
                lng: lng,
                firstname: markerData[prop].firstname,
                lastname: markerData[prop].lastname,
                company: markerData[prop].company,
                addressFormatted: addressData,
                street: markerData[prop].street,
                city: markerData[prop].city,
                postcode: markerData[prop].postcode,
                telephone: markerData[prop].telephone
            }

            markers[i] = new google.maps.Marker({
                map: map,
                position: {lat: lat, lng: lng},
                title: markerData[prop].firstname + ' ' + markerData[prop].lastname,
                markerInfo: markerInfo
            });

            markers[i].addListener('click', function() {
                updateInfo(this.markerInfo);
            });

            $.get('cache.php', {
                address: addressData,
                lat: lat,
                lng: lng
            });
        }
    });
}

addressData始终是markerData最后一个条目的值。 markerData数据绝对正确。

我需要一种同时传递 addressData 的方法和markerDatageocoder.geocode可以在回调内部访问的函数。

最佳答案

我的评论示例:

for (var prop in markerData) {
    (function(addressData){
        geocoder.geocode( { address: addressData }, function(results, status) {
            //Other code
        });
    })(addressData);
}

关于javascript - 如何将变量传递给保持不变的异步回调函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34182112/

相关文章:

google-maps - Google map 、中国的 HTTP 和混合内容错误

php - 未应用 TinyMCE 自定义样式(尽管技术上可行)

javascript - 在 D3.js 中旋转对象

google-maps - 启用可在 Google map 中点击的公交车站图标

javascript - 如何实现 Typescript 异步等待模式 : Where is the Promise

java - 如何在 Java 中以同步方式处理异步回调?

asynchronous - 如何将异步函数存储在结构中并从结构实例中调用它?

javascript - 将 id 分配给单个列中存在的两个元素

javascript - 拦截按键(如空格和箭头)时停止页面滚动

android - 在谷歌地图上叠加图像 android api v2