Vuejs2 &引用;超过最大调用堆栈大小;通过将数据传递到Vuex状态
我通过向API发送Vuejs2 &引用;超过最大调用堆栈大小;通过将数据传递到Vuex状态,vuejs2,vuex,Vuejs2,Vuex,我通过向API发送GET请求从MongoDB获取数据。然后,我循环遍历响应.data,并在每个响应.data中遍历其属性,以将需要的数据推送到下一个数组中。此nextArray应传递到Vuex中的schedulingQuality-状态。这就是它看起来的样子: 方法:{ …映射操作( ['setSchedulingQuality'] ), 获取_数据(){ 常量nextArray=[]; for(让我输入此.SelectedtValues){ axios.get()http://127.0.0.
GET
请求从MongoDB获取数据。然后,我循环遍历响应.data
,并在每个响应.data
中遍历其属性,以将需要的数据推送到下一个数组中。此nextArray
应传递到Vuex中的schedulingQuality
-状态。这就是它看起来的样子:
方法:{
…映射操作(
['setSchedulingQuality']
),
获取_数据(){
常量nextArray=[];
for(让我输入此.SelectedtValues){
axios.get()http://127.0.0.1:5000/getexp/“+this.SelectedtValues[i])
。然后(res=>{
for(设n为分辨率数据){
nextArray.push(res.data[n].输出)
}
}
)}
控制台日志(nextArray);
},
计算:{
…地图绘制者(
['schedulingQuality','selectedValues']
),
SelectedtValues(){
返回此值。$store.getters.selectedValues;
} ,
计划质量{
返回此。计划质量;
}
}
当我打印出nextArray
时,它似乎没问题。我在控制台上得到了一个[]
,单击它后,正确的内容会出现,并显示一个小的I
图标,告诉我:“下面的值刚刚计算过
”。但是,我无法单独打印此数组的项,当我尝试打印时,每个项都有一个未定义的值。
但我的主要问题是,在打印之前,当我试图在上面的代码中将其传递到Vuex状态时,它抛出了一个超出最大调用堆栈大小的
错误,如:
this.setSchedulingQuality(下一个阵列)
以下是我的Vuex代码:
从“Vuex”导入Vuex;
从“axios”导入axios;
常量createStore=()=>{
返回新的Vuex.Store({
声明:{
进度安排质量:[],
},
突变:{
计划质量(状态、有效载荷){
state.schedulingQuality=有效载荷;
}
},
行动:{
setSchedulingQuality({commit},有效负载){
提交('SchedulingQuality',有效负载)
}
},
吸气剂:{
计划质量(状态){
返回状态。调度质量;
}
}
});
};
导出默认的createStore;
我的问题是:
- 为什么不能单独打印阵列项
- 为什么我会犯这个错误
- 我怎样才能修好它?
谢谢你抽出时间
axios
调用是异步的。在调用console.log(nextArray)
时,axios函数尚未完成。这就是为什么您得到了空数组
如果异步调用多个api,我建议您签出
你又救了我一次,谢谢你。
get_data() {
const nextArray = [];
Promise.all(this.SelectedtValues.map(value => {
return axios.get('http://127.0.0.1:5000/getexp/' + value)
})).then(results => {
results.map(res => {
for(let n in res.data) {
nextArray.push(res.data[n].output)
}
})
console.log(nextArray);
}).catch(err => {
console.error(err)
})
}