当前位置: 首页 > 知识库问答 >
问题:

vue2 return失效?

庞瀚
2023-06-13
async pdfConfirm(docId) {
  // debugger;
  let data = { docId: docId, isPost: 1 };
  // changeStatus 状态为4调确认接口
  if (this.newFileParam.changeStatus == 5) {
    // 新文件确认
    await newFileConfirm({ modifyNo: this.newFileParam.modifyNo })
      .then(res => {
        if (res.code == '999999') {
          this.dialogVisible = false;
          this.reflashGoods();
          return;
        }
      })
      .catch(error => {
        console.log(error.message);
        this.dialogVisible = false;
        this.reflashGoods();
        return;
      });
  }
  // 旧文件确认
  modifityPdfNote(data)
    .then(res => {
      // console.log(res.data);
      console.log('1111');
      this.dialogVisible = false;
      this.reflashGoods();
    })
    .catch(() => {
      this.dialogVisible = false;
      this.reflashGoods();
    });
},

为什么return没用

我改成这样是可以的
// 旧文件确认

oldFilesConfirm(data) {
  // 旧文件确认
  modifityPdfNote(data)
    .then(res => {
      // console.log(res.data);
      console.log('1111');
      this.dialogVisible = false;
      this.reflashGoods();
    })
    .catch(() => {
      this.dialogVisible = false;
      this.reflashGoods();
    });
},
// pdf 确认窗口
async pdfConfirm(docId) {
  // debugger;
  let data = { docId: docId, isPost: 1 };
  // changeStatus 状态为4调确认接口
  if (this.newFileParam.changeStatus == 5) {
    // 新文件确认
    newFileConfirm({ modifyNo: this.newFileParam.modifyNo })
      .then(res => {
        if (res.code == '000000') {
          this.oldFilesConfirm(data);
        } else {
          this.dialogVisible = false;
          this.reflashGoods();
        }
      })
      .catch(error => {
        console.log(error.message);
        this.dialogVisible = false;
        this.reflashGoods();
      });
  } else {
    this.oldFilesConfirm(data);
  }
},

共有2个答案

吉嘉珍
2023-06-13

在异步函数内使用 return 当然没有效果啊……
看了一下你的两个 return 的位置,所以直接使用 if……else 不就好了吗。

async pdfConfirm(docId) {
  ...
  if (this.newFileParam.changeStatus == 5) {
    // 新文件确认
    await newFileConfirm({ modifyNo: this.newFileParam.modifyNo })
      .then(res => {
        if (res.code == '999999') {
          this.dialogVisible = false;
          this.reflashGoods();
-          return;
        }
      })
      .catch(error => {
        console.log(error.message);
        this.dialogVisible = false;
        this.reflashGoods();
-        return;
      });
-  }
+  } else {  
    // 旧文件确认
    modifityPdfNote(data)
    .then(res => {
    ...
+  }
}

更新:

既然你本来调用就是链式的,所以直接把新/旧文件确认拿到外部作为单独的函数就好了,也就不需要使用 async/await 了,因为你其实也不需要去等待。
大概改了一下业务逻辑,你自己还可以优化一下:

methods:{
  pdfConfirm(docId) {
    let data = { docId: docId, isPost: 1 };
    // changeStatus 状态为4调确认接口
    if (this.newFileParam.changeStatus == 5) {
      this.newFileConfirm({ modifyNo: this.newFileParam.modifyNo }).then(() => this.modifityPdfNote(data))
    } else {
      this.modifityPdfNote(data)
    }
  },
  // 新文件确认
  newFileConfirm(data){
    return new Promise((resolve, reject) => {
      newFileConfirm(data)
        .then(res => {
          if (res.code == '999999') {
            resolve()
          } else {
            reject()
          }
        })
        .catch(error => {
          reject()
        })
        .finally(() => {
          this.dialogVisible = false;
          this.reflashGoods();
        })
    })
  },
  // 旧文件确认
  modifityPdfNote(data){
    modifityPdfNote(data)
      .then(res => {
        // console.log(res.data);
        console.log('1111');
      })
      .catch(() => {
      })
      .finally(() => {
        this.dialogVisible = false;
        this.reflashGoods();
      })
  },
}
鲍钊
2023-06-13

return 是跳出当前函数,上一级函数会继续执行。

要连续退出,你需要返回一个特殊的值,在外层函数里判断,然后继续 return

 类似资料:
  • 我正在试一试微型机器人。我注意到的一件事是Micronaut不会失败。 例如,如果我的豆子里有这样的东西 如果没有用键my.url定义的属性,则 null 我认为failfast会更好(就像springboot那样)。所以想知道这在微型机器人中是否也是可能的。

  • 我们有一个带有infinispan(v 9.4.18)失效缓存的双活动/活动节点Wildfly 19集群配置。 根据infinispan留档,当node1上的缓存值发生变化时,InvalidateCommand从节点1发送到node2,使node2缓存中的键条目无效/删除。 我注意到的是,即使在一个新的键put上,InvalidateCommand也会被发送。 在我们的应用程序中,如果在缓存中找不

  • 我尝试运行这个gradle任务(通过gradlew) 它使用cucmber jvm 并收到此错误 当我从cmd中的同一路径运行同一行时: 更新1: 这个cmd在shell控制台中工作: ./构建/发行版/WebLarge测试/bin/WebLargeTests-f html:构建/报告/cucumber/-f json:构建/报告/cucumber/report.json--胶水com.waze.

  • 和 textarea 上的问题类似,原因在 Android 真机上,无法动态在 video 设置 data-,即: <video data-cid="{{cid}}" bindplay="onPlay"></video> 当 play 事件触发时,无法从事件对象上取得 dataCid 的值,从而无法根据上面的信息找到对于的事件处理方法。 解决方法 框架必须依赖于原生标签上 data- 的属性找到

  • SSHException:协商失败。 是不是我错过了什么地方? 我最初假设问题是围绕hostkeys发生的,但是我得到了相同的结果,或者传递一个hostkeys文件,或者将hostkeys设置为None(使用pysftp) 这似乎发生在连接的早期,就好像我使用随机的用户名或密码,我得到的结果完全一样 调试信息如下: 如果我(成功)通过连接并启用了日志记录,我将获得以下日志:

  • 在使用IDEA Ultimate创建/克隆Spring项目时,我总是得到PKIX路径验证失败:Java . security . cert . certpathvalidatorexception:有效性检查失败 这是完整的错误消息 我似乎找不到与此问题相关的答案,那里有很多PKIX路径验证失败,但我似乎找不到我的问题的解决方案。