Vuejs2 &引用;超过最大调用堆栈大小;通过将数据传递到Vuex状态

Vuejs2 &引用;超过最大调用堆栈大小;通过将数据传递到Vuex状态,vuejs2,vuex,Vuejs2,Vuex,我通过向API发送GET请求从MongoDB获取数据。然后,我循环遍历响应.data,并在每个响应.data中遍历其属性,以将需要的数据推送到下一个数组中。此nextArray应传递到Vuex中的schedulingQuality-状态。这就是它看起来的样子: 方法:{ …映射操作( ['setSchedulingQuality'] ), 获取_数据(){ 常量nextArray=[]; for(让我输入此.SelectedtValues){ axios.get()http://127.0.0.

我通过向API发送
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)
    })
}