0

所以我有这样的功能 -

    IPGeocoding = (data) ->
    coords = []
    _.each(data, (datum) ->
        $.ajax(
          url: "http://freegeoip.net/json/#{datum}"
          type: 'GET'
          async: false
          success: (result) ->
            lat = result.latitude
            lon = result.longitude
            pair = [lat, lon]
            coords.push(pair)
            console.log coords
        )

    return coords


    )

我希望仅在所有请求都返回时才返回坐标。我怎么做?

4

1 回答 1

2

_.after下划线与一个方法捆绑在一起。_.after有两个参数。第二个是您要执行的函数,第一个是您希望在执行之前调用它的次数。可以通过以下方式使用它来完成您尝试做的事情:

IPGeocoding = (data, callback) ->
    coords = []
    finish = _.after(data.length, callback)
    _.each(data, (datum) ->
        $.ajax(
            url: "http://freegeoip.net/json/#{datum}"
            type: 'GET'
            async: false
            success: (result) ->
                lat = result.latitude
                lon = result.longitude
                pair = [lat, lon]
                coords.push(pair)
                console.log coords

                finish(coords)
         )
    )
于 2013-08-19T03:05:52.320 回答