0


0

親関数へのajax呼び出しから値を返します

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を返す理由を理解しています。 一般に、この問題を解決するためにコールバック関数を使用することは知っていますが、親関数に値を返すコールバックを取得する方法がわかりません。 私はgoogle maps APIを使用しているため、実際にその動作を変更する柔軟性はありません。

1 Answer


4


Ajaxリクエストは非同期であるため、唯一のオプションはコールバックを使用することです。 「親」(実際には「呼び出し」)関数に値を返すことができる場合、リクエストは非同期ではありません。呼び出し関数をブロックします。 また、その関数のクロージャー内から呼び出し元の関数への参照を取得する方法はありません。 (つまり、コールスタックの上位の関数に「戻る」ことはできません)。