let xDataName = []; for (let i = 0; i < xData1.length; i++) { request.get("/echarts/findnamebyid", { params: { id: xData1[i] } }).then(res => { xDataName.push(res.name); }) } console.log(xDataName)为什么我输出的xDataName是空的,也就是没赋到值,我该怎么改才可以
时间: 2024-01-12 22:02:59 浏览: 40
小程序中为何无法setData赋值?
这是因为 `request.get` 是一个异步操作,而 `console.log(xDataName)` 在异步操作完成之前就已经执行了,所以输出的结果是空数组。
你可以将 `request.get` 放在 Promise 中,并使用 Promise.all() 来等待所有请求完成,然后再输出结果。修改后的代码如下:
```
let xDataName = [];
let promises = [];
for (let i = 0; i < xData1.length; i++) {
let promise = request.get("/echarts/findnamebyid", {
params: {
id: xData1[i]
}
}).then(res => {
xDataName.push(res.name);
});
promises.push(promise);
}
Promise.all(promises).then(() => {
console.log(xDataName)
});
```
这样,当所有请求完成后,`Promise.all()` 回调函数中的代码块会执行,这时 `xDataName` 中的数据已经都被赋值了,可以正常输出结果。
阅读全文