【问题标题】:Vue js - async await issueVue js - 异步等待问题
【发布时间】:2022-01-25 03:30:15
【问题描述】:

我在 Login.Vue 中的代码如下

methods: {
            async validateLoginBeforeSubmit () {
                this.$validator.validate().then((result) => {
                    if (result) {
                        var data = {
                            email: this.email,
                            password: this.password
                        }
                        var response =  await this.$api('POST', 'login', data);
                    }
                })
            },
        },

这是原型函数

从'vue'导入Vue;

Vue.prototype.$api = async() => function(method, url, data){
    if (method == 'POST') {
      return new Promise((resolve) => {
        this.$http.post(url, data).then((response) => {
          resolve(response);
        }).catch((error) => {
          if (error.response.status == '401') {
            /* Destroy token from local storage and redirect to login page */
          }
          resolve(error.response);
          return false;
      });
    });
  }
}

下面报错

error  Parsing error: Unexpected reserved word 'await'.

谁能帮我做同样的事?

【问题讨论】:

标签: javascript vue.js async-await promise


【解决方案1】:

您不应混用 async/await 和传统的 then 承诺处理方式,因为这会导致混淆。

内测:

async validateLoginBeforeSubmit () {
  var result = await this.$validator.validate()
  if (result) {
    var data = {
      email: this.email,
      password: this.password
    }
    var response = await this.$api('POST', 'login', data);
  }
}

【讨论】:

  • @match- 你的解决方案完全有效,太棒了现在我有一个小问题,如果从 Vue.prototype.$api 函数执行 catch 块并发出警报,我不想返回任何东西怎么办那里并返回false?
猜你喜欢
  • 2021-10-11
  • 1970-01-01
  • 2018-12-09
  • 1970-01-01
  • 2022-10-25
  • 2019-03-27
  • 1970-01-01
  • 2020-10-16
  • 1970-01-01
相关资源
最近更新 更多