如下 js 函数需要返回一个请求成功的数据数组,但是由于 ajax 为异步请求,循环中发送多个请求,函数 return 时请求结果还未返回,所以 return 的永远是空数组
解决方法
使用 async await 阻断函数执行,等待所有的请求返回,此时 temp 中包含了所有返回数据,也可以在 then() 方法中处理返回数据
Promise.all()方法用于将多个Promise实例,包装成一个新的Promise实例
Promise.all()方法接受一个数组作为参数,数组中的元素必须均为
promise的实例
async getAduitNodeData(paramsList) {
resNodeIdParams = [];
const promises = paramsList.map(params => {
return Api.request({
url: 'XXXXXXX',
method: 'post',
data: params
}).then(result => {
if (result && result.success) {
resNodeIdParams.push(result.data);
} else {
this.$message({
type: 'error',
message: result.errorMsg
});
}
});
});
const temp = await Promise.all(promises);
return resNodeIdParams;
}









网友评论