关于async和await实现同一个接口连续调多次,一次返回有结果(不论成功与否)后执行下一次

循环调用接口

async asyncFn() {
      this.loadingText = `正在查询:1/${this.liveArr.length}`;
      for (var i = 0; i < this.liveArr.length; i++) {
        try {
          this.loadingText = `正在查询:${i + 1}/${this.liveArr.length}`;
          await this.getVideoList(this.liveArr[i].value,i);
        } catch (e) {
          this.videoChnList.push([]);
          this.loadingText = `正在查询:${i + 1}/${this.liveArr.length}`;
        }
      }
      this.loading = false;
      this.$refs.videoChn.getVideoChnList(this.videoChnList, this.carNo);
      this.videoChnList = [];
    },

后台的异步接口,需要返回一个primise对象

getVideoList(cameraId,i) {
      let promise = new Promise((resolve, reject) => {
        let videoParam = {};
        videoParam.startTime = `${this.dateVal} 00:00:00`;
        videoParam.endTime = `${this.dateVal} 23:59:59`;
        videoParam.cameraId = cameraId;
        videoParam.imei = this.imei;
        getVideoList(videoParam)
          .then((res) => {
            if (res.data.code === 0) {
              let startTime = null;
              let endTime = null;
              const data = res.data.data;
              data.forEach((item, index) => {
                startTime = item.start.substr(11);
                endTime = item.end.substr(11);
                let arrTime = [
                  this.switchTime(startTime),
                  this.switchTime(endTime),
                ];
                this.channels[i].push(arrTime);
                this.$set(item, 'chn', cameraId);
              });
              this.videoChnList.push(data);
              // this.loadingText = `正在查询:${cameraId + 1}/7`
              resolve('成功了');
            } else {
              reject('出错了');
            }
          })
          .catch((e) => {
            reject('出错了');
          });
      });
      return promise;
    },

最终效果描述
当用户点击查询时,掉第一次接口,页面显示加载特效,第一次接口有返回后(无论后台接口是否返回成功)调第二次。。。。。。依次类推,当调完7次后,加载特效消失
ps:注意这里的for循环不要用foreach或者map,要不然会失效

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容