【问题标题】:Return a value from an ajax call to parent function从 ajax 调用返回一个值到父函数
【发布时间】:2011-04-14 22:25:47
【问题描述】:

我有一个函数,我需要返回一个通过 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。我知道一般人们使用回调函数来解决这个问题,但我不知道如何让回调返回父函数的值。我正在使用谷歌地图 API,所以我真的没有任何灵活性来改变它的工作方式。

【问题讨论】:

标签: javascript jquery ajax callback return


【解决方案1】:

因为 Ajax 请求是异步的,所以您唯一的选择是使用回调。如果您可以向“父”(实际上是“调用”)函数返回一个值,那么请求就不会是异步的;它会阻止调用函数。此外,无法从该函数的闭包中获取对调用函数的引用。 (即,您不能 return 调用堆栈中更高的函数)。

【讨论】:

  • 那么,假设我无法更改 getTileUrl 函数在 google maps api 中的工作方式,你是说它不可能做我想做的事吗?因为回调并不能帮助我真正将值返回给 getTileUrl 函数。
  • 查看上面发布的@Matthew Flaschen 链接,它会对您有所帮助。
猜你喜欢
  • 2019-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
相关资源
最近更新 更多