所以我有这样的功能-
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/