我正在将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);
}
}
});
}
答案 0 :(得分:0)
如果没有更多记录,API将返回什么?为什么不只是在函数中使用if / else对返回的数据执行某些操作呢?
if (!offset) {
// Stop running requests and do something else
tellMeItsDone();
} else {
// Continue doing requests
doAnotherAjaxRequest(offset);
}