javascript - 如何根据变量运行功能未知的次数?
问题描述
我正在尝试创建一个从端点检索数据的 Javascript API 函数。这里的问题是它返回的最大数量为 1000 条记录,总记录量可达 300.000 条记录。所以我需要循环这个 API 函数,并在start
每次运行时不断地将“1000”添加到变量中。因此,该函数将继续获取记录,直到达到未知的记录总数。假设这个例子有 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 等。有谁知道如何解决这个问题?
解决方案
您需要将函数外部的 start/counter 声明为全局。并在内部使用相同的变量并根据需要更新开始/计数器。如果达到最后一个或未知数量,还添加一个条件检查 data.count 以退出循环
var start;
var counter;
function loopFunction() {
function getResponse() {
if (counter === 'undefined' || counter === null) {
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
start += 1000;
var count = data.count;
var currentStart = data.start;
var runAgain = count + currentStart;
counter = 1;
return runAgain;
}
var runAgain = getResponse();
console.log(runAgain);
loopFunction();
}
}
推荐阅读
- android - 用于轮询数据的 Rxjava2 单元测试失败
- java - 从 WMS 请求地图并将其作为 PNG 图像保存到磁盘
- r - nchar(Tony.raw$neighborhood_overview) 中的错误:“nchar()”需要字符向量
- python - 将 .py 转换为 .exe 会生成黑窗应用程序并在几秒钟后消失
- python - 如何按列获取 Pandas Dataframe 最大值以及每列最大值的 id
- excel - ActiveWorkbook 与 ThisWorkbook 表计数问题
- python - 如何在 Tkinter 中为 2d 游戏移动精灵
- azure - Azure IoT 中心消息计数和有效负载大小之间的奇怪关联
- sql - 如何在同一列上添加不同的条件,以便根据该条件在报表中形成一个新列
- gitlab - GITLAB - 从我的存储库下载最新版本的永久链接