所以我有这样的功能-

    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


    )


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

最佳答案

下划线与_.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)
         )
    )

关于javascript - 解决异步请求,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18305825/

10-12 16:22