【发布时间】:2023-04-09 22:02:01
【问题描述】:
我正在尝试在 for 循环中发出 axios POST 请求。但是,axios post POST 请求正在运行 n 次,只有循环的最后一个值。以 sheetName="Virudhunagar Beds" 的值运行两次。下面是我的一段代码:
const axios = require('axios')
const sheetDistrictMap = {
"Ariyalur Beds": "5ea0abd3d43ec2250a483a4f", "Virudhunagar Beds": "5ea0abd3d43ec2250a483a58"
}
let promises = [];
for (sheetName in sheetDistrictMap) {
promises.push(
axios.post('https://tncovidbeds.tnega.org/api/hospitals', {
District: sheetDistrictMap[sheetName],
FacilityTypes: ["CHO", "CHC", "CCC"],
IsGovernmentHospital: true,
IsPrivateHospital: true,
pageLimit: 100
})
.then(res => {
var outputJsonArray = [];
for (i = 0; i < res.data.result.length; i++) {
var rowJson = {};
var rowdata = res.data.result[i];
rowJson["Name"] = rowdata["Name"];
outputJsonArray.push(rowJson);
}
console.log("Parsed sheet: " + sheetName);
console.log(outputJsonArray);
console.log("========================================================");
})
.catch(error => {
console.error(error)
})
)
}
Promise.all(promises).then(() => console.log("All data scraped"));
如何使用每个循环参数进行异步调用?
【问题讨论】:
-
这是一个article,关于 javascript 循环中的变量范围和闭包
-
太棒了。我没有考虑变量范围。我一直认为它是由非异步请求引起的。甚至不需要承诺。谢谢!
标签: javascript node.js asynchronous async-await axios