我正在尝试创建一个可以创建新标记的函数。我需要能够在回调中处理新标记的一些属性。问题是marker
立即创建并可用于调用回调,但某些属性尚不可用。
如果我在尝试访问属性之前等待两秒钟,它就可以正常工作 - 这使我相信该对象在创建后仍在异步生成自身。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple markers</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
var latLng = new google.maps.LatLng(-25.363, 131.044);
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: latLng
});
function placeMarker(map, latLng, callback, callback2){
var marker = new google.maps.Marker({
position: latLng,
map: map });
callback(marker);
callback2(marker);
}
placeMarker(map, latLng, function(marker){
setTimeout( function(){
console.log(marker.Xg.Oa)
}, 2000);
}, function(marker){
console.log(marker.Xg.Oa);
});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?signed_in=true&callback=initMap"></script>
</body>
</html>
在这个例子中回调:
setTimeout( function(){
console.log(marker.Xg.Oa)
}, 2000);
产生正确的响应。但是不等待的回调显示未定义的错误:
function(marker){
console.log(marker.Xg.Oa);
}
我在这里使用 Google Maps Javascript API 库,并且由于显而易见的原因,不能选择乱搞 google.maps 的内容。我想将整个对象传递给回调,但我需要确保 latLng 信息(marker.Xg.Oa
) 在调用它之前就存在。在调用回调之前如何确保它存在?