【发布时间】:2019-06-12 02:36:58
【问题描述】:
我正在编写一个从 API 检索数据的脚本。我需要在 API 中获取所有数据实例,但 API 一次将我限制为 250 个结果。响应还给了我一个偏移量,我可以在新的 API 调用中使用它来获取下一组结果。我知道我需要对 API 进行多少次调用,我的想法是在 params 中使用一个变量,以便在每次调用 API 后更新偏移量。问题总是回到实际设置变量并在循环再次运行时使用它。
我能够运行 ajax 请求并返回数据,然后将偏移量设置为变量。我尝试创建一个初始 API 调用,然后返回响应,然后在 for 循环内的新函数中使用该返回值。这似乎是最接近我的解决方案,但每次循环运行时,变量都会重置为 null,并且我会返回初始偏移值。
这是最新的代码:
for (iteration = 1; iteration < 4; iteration++) {
let offsetValue;
pullWriteData = offsetValue => {
return axios({
method: "get",
url: "https://api.hubapi.com/engagements/v1/engagements/paged",
params: {
hapikey: "API_KEY_HERE",
limit: 250,
offset: offsetValue
}
}).then(response => {
return response.data;
});
};
pullWriteData().then(data => {
offsetValue = data.offset;
console.log("New offset value: " + offsetValue);
return offsetValue;
});
}
此代码返回:
New offset value: 12345678
New offset value: 12345678
New offset value: 12345678
我还在我的 pullWriteData() 调用的 .then 中构建了第二个 Axios 调用,这确实有效,但这肯定违背了为我编写程序的目的。
我的期望是这将运行初始 API 调用,将数据写入文件,更新 offsetValue,使用新的 offsetValue 再次运行 API 调用,将响应写入文件,更新 @ 987654326@ 并重复,直到我提取所有数据。
就将数据写入文件而言,我已经能够使用fs 来做到这一点。它只是让offsetValue 值更新,这似乎让我很烦恼。
提前感谢您的任何指导。
【问题讨论】:
标签: javascript for-loop promise axios