重做ajax调用并返回复合结果

时间:2019-07-16 20:45:52

标签: jquery ajax api

我正在将Ajax与JQuery一起使用,以从一次仅返回100条记录的API提取数据。如果我的查询给出的结果包含100条以上的记录,则API将在响应中包含“ offset”参数。我必须在新的API调用中使用此offset参数来获取接下来的100条记录。如果还有更多记录要提取,则该API将包含一个新的offset参数。依此类推,直到提取所有记录。

我知道如何将结果推入数组,检查offset参数是否在结果中,如果是,请执行另一个API调用并将结果推入同一数组。但是,我该如何构造一个函数来执行所有这些ajax调用,并让我知道何时所有记录已被提取?

下面是我的函数现在的外观。

function getContracts(offset) {

    var data = {};

    if (offset !== undefined) {
      data["offset"] = offset;
    }

    $.ajax({
      url: url,
      headers: {
        Authorization: apiKey
      },
      data: data,
      success: function(result){

        $.each(result.records, function() {        
            contracts.push(this);
        });

        if (result.hasOwnProperty("offset")) {
          getContracts(result.offset);
        }

      }

    });

  }

1 个答案:

答案 0 :(得分:0)

如果没有更多记录,API将返回什么?为什么不只是在函数中使用if / else对返回的数据执行某些操作呢?

if (!offset) {

  // Stop running requests and do something else
  tellMeItsDone();

} else {


  // Continue doing requests
  doAnotherAjaxRequest(offset);

}