vue:语法错误:await是保留字

时间:2018-06-19 09:37:56

标签: javascript vue.js vuejs2

async checkDriver(mobile) {
    this.$axios({
      url: "xxx",
      method: "POST",
      data: {
        mobile: mobile
      }
    }).then(res => {
      console.log("========="+res.status);
      return res.data.status;
    }).catch(error => {
      this.$message.error(error.toString());
      return -1;
    });
  },
  addValidate() {
    this.$refs['form'].validate((valid) => {
      if (valid) {
        let status = await this.checkDriver(this.form.mobile);
        console.log(status);

      } else {
        return false;
      }
    });

未解决的变量或类型await.Highlights可能是异步但缺少异步修饰符的函数。如何使用await in =>?给我一些帮助。谢谢

3 个答案:

答案 0 :(得分:3)

await doTheWrites(); 关键字必须用于在其正文中使用等待的函数。

所以,将asyncasync移到checkDriver

addValidate

此外,checkDriver(mobile) { // ... } async addValidate() { // ... let status = await this.checkDriver(this.form.mobile); } 方法应该返回一个promise。因此,请将checkDriver的内容更改为:

checkDriver

并且Promise返回的数据(本例中为axios)将被分配到checkDriver(mobile) { return this.$axios({ url: "xxx", method: "POST", data: { mobile: mobile } }) } 中的status

然后,如果你想处理错误,你应该将addValidate调用包装在try / catch块中。

答案 1 :(得分:2)



addValidate() {
    this.$refs['form'].validate( async (valid) => {
      if (valid) {
        let status = await this.checkDriver(this.form.mobile);
        console.log(status);

      } else {
        return false;
      }
    });




您可以在参数

旁边添加缺少的async关键字

答案 2 :(得分:0)

您必须使addValidate()异步,例如async addValidate() { /* ... */ }。您只能use await in a function that's marked async