javascript - 如何在 Ajax 同步调用后更新值
问题描述
我正在从我的节点(快递)后端服务器获取数据以响应前端。但是当我尝试访问数组索引值时,我得到的输出是未定义的。我肯定在这里做错了什么。感谢有人可以帮助我。
这是我的服务器端代码:
const companyDetails = [];
companies.forEach((company) => {
companyDetails.push(company);
});
app.get("/api/companies", (req, res) => {
res.json(companyDetails)
});
这是我的客户端代码:
let arr = [];
function fetchComNames() {
axios.get('/api/companies').then(res => {
for(let i=0; i<=4; i++) {
arr.push(res.data[i].name)
}
})
}
fetchComNames();
console.log(arr[0]); //undefined
但是当我console.log(arr);
打印出数组时。我只是不能单独访问每个索引值。
解决方案
API 调用是异步的,因此您在数组中包含其值之前访问该数组。尝试将您的封闭函数标记为异步并等待 axios get 以便强制调用同步。
let arr = [];
async function fetchComNames() {
const fetched = await axios.get('/api/companies');
for(let i=0; i<=4; i++) {
arr.push(fetched.data[i].name)
}
}
fetchComNames();
console.log(arr[0])
推荐阅读
- usb - Zigbee 嗅探器可在家中渗透测试 Zigbee 网络
- python-3.x - 使用 KDTree/KNN 返回最近的邻居
- macos - 无法在 macOS 10.12 上运行 Qt 5.12.2
- node.js - URL中运算符之间的区别
- ios - 使用 iFunbox > 用户文件系统在 iOS 13.3 上删除空相册
- c++ - 为什么编译器会报告“operator<< and operator>> recursive on all control paths will cause stack overflow”?
- c++ - 具有不同返回类型的函数变体
- sql - 如何显示来自两个公用表表达式的列?
- python - 有没有解决pandas内存错误的方法?
- python - 遍历列表并将计算值插入第 n 个位置