循环调用多个链式调用接口,出问题中断所有请求

191 阅读1分钟

一个之前做的需求,甲方领导觉得一个个审批太麻烦要求增加批量审批功能,但是后台的逻辑特别复杂,不能轻易改动(也改不明白),最后压力给到前端 理一下逻辑,单个审批的时候从前一个页面进入审批页面,按顺序链式调用fun1,fun2,fun3三个接口,如果其中一个接口报错就返回前一个页面。 所以多个审批就是从前一个页面获取到需要审批的list列表,通过循环调用三个接口,发现问题通过 throw Error抛出错误,通过try catch捕获错误,中断循环

  async created() {
    let list = []
    for (let i = 0; i < 10; i++) {
      list.push(i+1)
    }
    console.log('模拟需要审批的list',list);

    for (let j = 0; j < list.length; j++) {
      const element = list[j];
      try {
        await this.fun1(element)
      } catch (error) {
        console.log(error);
        return
      }
    }
  }
  methods: {
     fun1(item){
        console.log('fun1',item);
        this.fun2(item)
        return Promise.resolve()
     },
     fun2(item){
      if(item==5){
        throw Error('出错了')
      }
      console.log('fun2',item);
      this.fun3(item)
      return Promise.resolve()
    },
    fun3(item){
      console.log('fun3',item);
      return Promise.resolve()
    },
   }