【发布时间】:2021-08-08 21:52:53
【问题描述】:
我正在尝试创建一个从端点检索数据的 Javascript API 函数。这里的问题是它返回的最大数量为 1000 条记录,总记录量可达 300.000 条记录。所以我需要循环这个API函数,并在每次运行时不断地将'1000'添加到start变量中。因此,该函数将继续获取记录,直到达到未知的total amount记录。假设这个例子有 300.000。然后它应该循环 300 次。
API 和一切都运行良好。我唯一的问题是我有 start 变量在每次运行后不会给自己添加 1000。它应该将 1000 添加到变量本身,然后再次运行,以检索下 1000 条记录。
这是我的功能:
function loopFunction() {
function getResponse() {
if (typeof counter === undefined || counter === null) {
var start = 0;
}
var response = UrlFetchApp.fetch("https://www.apiurl?start=" + start + "&limit=1000&access_token=xxx");
// Parse data to JSON and get total
var fact = response.getContentText();
var data = JSON.parse(fact);
// Retrieve start number and count
var start = data.start += 1000;
var count = data.count;
var runAgain = count + start;
var counter = 1;
return runAgain;
}
var runAgain = getResponse();
console.log(runAgain);
loopFunction();
}
}
当我运行这个函数时,数据被检索并且循环部分工作。唯一的问题是 console.log(runAgain); 不断返回 1000 而不是 1000、2000、3000、4000、5000 等。有谁知道如何解决这个问题?
【问题讨论】:
-
你需要在函数外声明和初始化
counter。否则每次调用它时它都会重置为1。 -
这听起来不像是从 API 获取数据的最佳方法。
-
当
counter为undefined时,counter === 'undefined' || counter === null将不起作用。undefined和'undefined'根本不是一回事。 -
这是一个糟糕的设计,你应该看看分页
-
如果你真的很想这样做,请使用生成器函数。 developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…*
标签: javascript