Возврат значения из вызова ajax в родительскую функцию

У меня есть функция, где мне нужно вернуть URL-адрес, который я получаю через вызов ajax.

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 как неопределенное. Я знаю, что в основном люди используют функции обратного вызова для решения этой проблемы, но я не знаю, как получить обратный вызов, чтобы ВОЗВРАТИТЬ значение родительской функции. Я работаю с API Google Maps, поэтому у меня нет никакой гибкости, чтобы изменить, как это работает.

 Matthew Flaschen21 сент. 2010 г., 00:39
См. [Как вернуть переменную из обратного вызова геокодера Google Maps JavaScript? ] (stackoverflow.com/questions/2993563/...)

Ответы на вопрос(1)

Поскольку запрос Ajax является асинхронным, единственным вариантом является использование обратного вызова. Если бы вы могли вернуть значение в функцию «родитель» (на самом деле, «вызывая»), тогда запрос не был бы асинхронным; это заблокировало бы вызывающую функцию. Кроме того, нет способа получить ссылку на вызывающую функцию из замыкания в этой функции. (то есть вы не можетеreturn функции выше в стеке вызовов).

 Chris Laplante21 сент. 2010 г., 01:02
Проверьте ссылку @Matthew Flaschen, размещенную выше, она поможет вам.
 user43528121 сент. 2010 г., 00:58
Итак, вы говорите, что невозможно делать то, что я хочу, предполагая, что я не могу изменить способ работы функции getTileUrl в API карт Google? Потому что обратный вызов не поможет мне на самом деле вернуть значение этой функции getTileUrl.

Ваш ответ на вопрос