H5W3
当前位置:H5W3 > 其他技术问题 > 正文

vue.js里for循环做异步请求时,如何在请求失败的时候跳出整个for循环?

for (let i = 0; i < 2; i++) {
    axios.post('/MemberExamPaper/GetWrongPage', data).then((res) => {
        if (res.code === 200) {
            console.log('加载成功!')
        } else {
            console.log('加载失败!跳出整个for循环')
        }
    })
}

回答:

  1. 设置一个flag , 如果加载失败 , 将flag设置为false , 在每次请求前判断这个flag ,如果flase直接pass。
  2. 请求失败是进catch,你在then里是接收不到的。
  3. 要用递归,因为异步的机制,for循环都执行完了,异步请求才会执行。(如楼下小姐姐所述)

this.i 表示你要请求的次数。

function postXXX(){  
    if(this.flag && this.i > 0){ // 判断 1 是否请求成功 2 是否到达请求次数
        axios.post('/MemberExamPaper/GetWrongPage', data).then((res) => {
            console.log('加载成功!');
            this.i -- ;    //请求次数 - 1
            this.postXXX();
        }).catch(()=>{
            this.flag = false;
        });
    }
}

回答:

用递归。循环执行是一瞬间,循环多少次就发多少个请求。没人会这么做,等你返回回来循环早已经结束了。

回答:

异步处理尽量避免用for循环吧,可以尝试定义个外部变量用来记录,然后用递归调用。

回答:

异步,异步,已经都出来了,才去请求的,不存在跳不跳

本文地址:H5W3 » vue.js里for循环做异步请求时,如何在请求失败的时候跳出整个for循环?

评论 0

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址