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

时间:2015-12-09 15:05:34

标签: javascript google-maps asynchronous

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

我的代码如下:

filterBsByTemplate

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数据肯定是正确的。

我需要一种方法将markerDataaddressData传递给可在回调中访问的markerData函数。

1 个答案:

答案 0 :(得分:2)

我的评论示例:

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