【问题标题】:Asynchronous Call not working in Coffee Script异步调用在咖啡脚本中不起作用
【发布时间】:2012-06-10 03:14:36
【问题描述】:

我正在使用 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)
)

顺便说一句:

origin = new google.maps.LatLng(origin_lat, origin_lng)

这不起作用,它甚至似乎都没有调用它。我在(data) 下有回调函数,但无法让它工作...

谢谢

【问题讨论】:

  • 您是否尝试删除使用 origin 的关键部分(冒号前面的内容),即不将其作为键值对传递,而只是将 origin 作为对象传递?跨度>

标签: google-maps coffeescript


【解决方案1】:

不确定您问题的整体背景,但无论如何我都会尝试一下。

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

country = (origin, callback) ->
   ...

然后在调用它时,尝试将@country(...)替换为country(...)

根据 cmets,您对地理编码的调用看起来也有问题。您需要创建一个 GeocoderRequest 实例并传递它而不是 'latLng': origin 对。不幸的是,我没有太多使用 Google 风格的 API,所以如果这是你真正的问题,我对你没多大用处。

【讨论】:

  • 但是回调需要是函数no所以需要打开括号并在之后关闭?
  • 不确定你的意思。您是否尝试过我建议的更改(保留其他所有内容)?如果我正确理解上下文,它应该可以工作......
  • 不,等等,对地理编码的调用看起来有问题。它需要一个对象(键值对)还是参数列表?看起来像您编写的对象,但它需要一个名称,而不仅仅是值(函数本身)。
  • 原点是 googlemaps-latlng。回调是一个接受 api 调用输出代码的函数?
  • 嘿,我看到你的编辑功能有效......我可以从它内部得到响应 - 我无法将结果传递到任何地方!
猜你喜欢
  • 1970-01-01
  • 2011-12-01
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-15
  • 2015-08-03
相关资源
最近更新 更多