同一個接口同時調用兩次其中一個不生效?


在工作中有時候會遇到這樣的需求一個頁面有多個區域,每個區域根據不同的條件去后台查同一個接口。

當我調用此接口兩次的時候,其中一個是不會生效的,甚至network中你會發現只發了一次請求,

后來我試了一下調第二個方法的時候放在setimeOut中,時間是1000ms問題解決,但是改成100,接口會報錯(cancel)后台沒有任何的響應不知道狀態碼,因為封裝的axios公用函數里面做了限制統一接口同一時間只能請求一次。

也想過在第一次接口請求成功后在調一次該接口。這樣寫不優雅 回到地獄比較low。

后來我換成了async await的方式解決了該問題

watch: {
    'qualityModel.modelCode': {
      async handler(val) {
        this.modelCode = '';
        this.uniqueConstList = [];
        this.connConstList = [];
        this.uniqueConst.removeAll;
        this.connConst.removeAll;
        if (val) {
          this.modelCode = val;
          await this.getUniqueConstList();
          await this.getConnConstList();
        }
      },
      deep: true
    }
methods:{
 // 獲取所有唯一約束
    async getUniqueConstList() {
      let param = { modelCode: this.modelCode, type: '0' };
      let response = await Rule.getConstraintList(param, 0);
      response.data.forEach(item => {
        item.check = false;
        item.constraintCheckRemindLimit = 30;
        item.constraintCheckWarnLimit = 50;
        this.qualityModelConstEntityList.forEach(ids => {
          if (ids.constId === item.id) {
            item.check = true;
            item.constraintCheckRemindLimit = Number(
              ids.constraintCheckRemindLimit
            );
            item.constraintCheckWarnLimit = Number(
              ids.constraintCheckWarnLimit
            );
          }
        });
      });
      this.uniqueConstList = response.data;
    },
 // 獲取所有關聯約束
    async getConnConstList() {
      let param = { modelCode: this.modelCode, type: '1' };
      let response = await Rule.getConstraintList(param, 0);
      response.data.forEach(item => {
        item.check = false;
        item.constraintCheckRemindLimit = 30;w
        item.constraintCheckWarnLimit = 50;
        this.qualityModelConstEntityList.forEach(ids => {
          if (ids.constId === item.id) {
            item.check = true;
            item.constraintCheckRemindLimit = Number(
              ids.constraintCheckRemindLimit
            );
            item.constraintCheckWarnLimit = Number(
              ids.constraintCheckWarnLimit
            );
          }
        });
      });
      this.connConstList = response.data;
    }
}

  

具體的async await代碼貼上

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM