我有一个函数,我需要通过ajax调用返回一个url。
var heatmap = new google.maps.ImageMapType({
getTileUrl: function(coord, zoom) {
var tileURL;
$.get('getimage.php', { zoom: zoom, x: coord.x, y: coord.y }, function(data) {
if(data.status) { tileURL=data.image; }
}, "json");
return "tileURL";
},
tileSize: new google.maps.Size(256, 256),
opacity:0.55,
isPng: true
});
显然,ajax调用是异步的,所以我理解为什么上面的代码会将tileURL作为undefined返回。我知道一般来说人们使用回调函数来解决这个问题,但是我不知道如何回调给父函数返回一个值。我正在使用谷歌地图API,所以我没有任何灵活性来改变它的工作方式。
答案 0 :(得分:4)
由于Ajax请求是异步的,因此您唯一的选择是使用回调。如果你可以向“父”(真的,“调用”)函数返回一个值,那么请求就不会是异步的;它会阻止调用函数。此外,无法从该函数的闭包内获取对调用函数的引用。 (即,你不能return
到调用堆栈中更高的函数。