如何结合四方的两个请求?

时间:2014-02-25 16:33:29

标签: javascript jquery ajax foursquare

这是一个使用FourSquare API的新手。我不确定我是否正确执行此操作,但我需要通过“https://developer.foursquare.com/docs/venues/search”从搜索中提取数据。然而,除此之外,我想了解每个场地的更多细节,例如他们的营业时间以及除了通用联系人和名称之外的其他有关场地的详细信息。我所做的是嵌套ajax调用 - 搜索API,然后在搜索地点内,进行另一个场地详细搜索。

$.when(
  $.ajax({
    url: "https://api.foursquare.com/v2/venues/search?limit=4&"+$this.settings.key+"&ll="+$this.currentLocation.coord+"&intent=checkin",
    data: inputData,
    dataType: "json",
    success: function(res, req) {
      var data = res.response.venues;
      $('.results').find('.loading').addClass('hide');
      $.each(data, function(index, venue) {
        return $.ajax({
          url: "https://api.foursquare.com/v2/venues/"+venue.id+"?"+$this.settings.key,
          dataType: 'json',
          success: function(res, req) {
            data[index].details = detail = res.response.venue;
          }
        });
      });
    }
  })
).then(function(data) {
  var results = data.response.venues;
  console.log(JSON.stringify(results));
});

非常感谢任何帮助,谢谢!

2 个答案:

答案 0 :(得分:0)

使用done()

var request1 = $.get(...);
var request2 = $.get(...);

$.when(request1 , request2 ).done(function() {
    // when both are completed
});

答案 1 :(得分:0)

查看async Javascript库。将一组场地ID作为第一个参数传递到async.each,这应该可以帮助您入门。 async.waterfall还可以帮助您处理需要将数据从一个异步函数传递到下一个异步函数的情况。