Google maps 异步调用在Coffee脚本中不起作用

Google maps 异步调用在Coffee脚本中不起作用,google-maps,coffeescript,Google Maps,Coffeescript,我正在使用CoffeeScript、Backbone.js和Google Maps API对lat/lng进行反向地理编码 我有这个功能 country: (origin, callback) -> @geocoder = new google.maps.Geocoder @geocoder.geocode( 'latLng': origin, (results, status) => if status

我正在使用CoffeeScript、Backbone.js和Google Maps API对lat/lng进行反向地理编码

我有这个功能

  country: (origin, callback) ->
    @geocoder = new google.maps.Geocoder
    @geocoder.geocode(
        'latLng': origin,
        (results, status) => 
            if status is google.maps.GeocoderStatus.OK
              callback(result[6])
            else alert("Geocode was not successful for the following reason: " + status);
    )
当我称之为时,我使用:

@country(origin, (data) =>
   console.log(data.formatted_address)
)
顺便说一句:

这是行不通的,它甚至似乎都不叫它。我在
(数据)
下有回调功能,但无法使其工作


谢谢

我不太清楚你问题的整体背景,但无论如何我会尝试一下

按照您定义国家功能的方式,它通常是对象或地图的一部分。如果您只需要一个独立的函数,请尝试:

country = (origin, callback) ->
   ...
然后在调用它时,尝试将
@country(…)
替换为
国家(…)


根据这些评论,您对geocode的调用看起来也是错误的。您需要创建GeocoderRequest的实例并传递它,而不是
'latLng':origin
对。不幸的是,我没有太多使用谷歌风格的API,因此如果这是你真正的问题,我对你没有太多用处。

但是回调需要是函数否,所以它需要打开括号,然后关闭?不确定你的意思。你试过我建议的改变了吗(其他的都保持原样)?如果我正确理解了上下文,它应该可以工作……不,等等,对geocode的调用看起来是错误的。它需要对象(键值对)还是参数列表?看起来像是您编写的对象,但它需要一个名称,而不仅仅是值(函数本身)。回调函数是一个接受api调用的输出代码的函数?嘿,我看到你编辑的函数工作了。。。我可以从它的内部得到回应——我只是不能把结果传递到任何地方!您是否尝试删除使用origin的关键部分(冒号前面的内容),即不将其作为键值对传递,而将origin作为对象传递?
country = (origin, callback) ->
   ...