await is a reserved word 问题解决方式

1 篇文章 0 订阅

1 async 和 await 的概念,建议看这一篇文章https://www.cnblogs.com/SamWeb/p/8417940.html

我遇到的是在vue element组件里面的,原来的写法是这样的,组件表单校验成功后(createProjectConfirm函数里),先新增一条记录,再刷新列表(handleResult)

handleResult (res) {
        if (res.state !== 0) {
          this.$message({
            message: res.message,
            type: 'warning'
          });
        } else {
          this.$message({
            message: res.message,
            type: 'success'
          });
          this.$refs['projectForm'].resetFields();
          this.dialogFormVisible = false;
          this.getProjectList(1);
        }
      },
      createProjectConfirm () {
        this.$refs['projectForm'].validate((valid) => {
          if (valid) {
            let param = {
              projectName: this.projectForm.projectName,
              projectDescription: this.projectForm.projectDescription
            };
            this.$post('/api/project', param).then(res => {
              this.handleResult(res);
            });

2 后来尝试了下async 和 await,这样是可以成功的

      createProjectTest() {
       let param = {
              projectName: this.projectForm.projectName,
              projectDescription: this.projectForm.projectDescription
            };
       return this.$post('/api/project', param).then(res => {
          return res;
        });
      },
       createProjectConfirm () {
        this.$refs['projectForm'].validate( async (valid) =>{
            if(valid) {
                let res = await this.createProjectTest();
                console.log(res);

                if(res.state !== 0) {
                  this.$message({
                          message: res.message,
                          type: 'warning'
                        });
                } else{
                  this.$message({
                          message: res.message,
                          type: 'success'
                        });
                        this.$refs['projectForm'].resetFields();
                        this.dialogFormVisible = false;
                        this.getProjectList(1);
                }
            }

        })

之前报错await is a reserved word,是因为错把async放到createProjectTest上,这里async和await是成对出现的,所以应该放在匿名函数的位置,加async的函数会被await阻塞,await会跳出async让出线程,所以说学一个东西是一回事,会用一个东西是另外一回事。。自勉下

 

  • 16
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: 这个错误消息指的是在 JavaScript 代码中使用了 "await",但当前环境不支持 async/await 语法。请确保代码运行在一个支持 async/await 的 JavaScript 环境中,比如使用 Babel 转译代码或者在服务器端运行代码。 ### 回答2: "unexpected reserved word 'await'"是一个JavaScript语法错误,意思是在代码中出现了意外的保留字'await'。这个错误通常是因为在不支持异步函数的环境下使用了'await'关键字。 在JavaScript中,'await'关键字通常用于异步函数中,用于暂停当前函数的执行,等待一个Promise对象的解决(resolve)。这个关键字必须在async函数中使用,以便正确处理异步操作。 如果在代码中出现了"unexpected reserved word 'await'"错误,可能是以下几种原因: 1. 不支持异步函数的环境:在一些旧的浏览器或Node.js版本中,可能不支持异步函数的语法。解决这个问题的方法是使用经过编译的代码或升级到支持异步函数的环境。 2. 非异步函数中使用了'await':'await'关键字只能在异步函数中使用,如果在非异步函数中使用了'await',就会报错。要解决这个问题,可以将函数改为异步函数,或者将'await'关键字移除。 3. 错误的语法:如果'await'关键字周围的语法不正确,也会导致该错误。可以检查代码中的其他语法错误或拼写错误,以解决问题。 总之,"unexpected reserved word 'await'"是一个JavaScript语法错误,表示在不支持异步函数的环境或错误的语法下使用了'await'关键字。如果遇到这个错误,可以检查以上的几种原因,并进行相应的修正。 ### 回答3: "unexpected reserved word 'await'"表示出现了意外的保留字'await'。这个错误可能是由于在不支持该关键字的地方使用了'await'导致的。 在JavaScript中,'await'是异步函数中用来等待一个Promise对象进行解决的关键字。它只能在异步函数中使用。当我们在非异步函数或普通代码块中使用'await'时,就会出现上述错误。 要解决这个问题,我们可以检查是否在非异步函数或普通代码块中使用了'await'关键字。如果是的话,我们需要将其放在异步函数中才能正常工作。异步函数可以使用'async'关键字声明。 例如: ```javascript async function getData() { const response = await fetch('https://api.example.com/data'); const data = await response.json(); console.log(data); } getData(); ``` 在上面的例子中,'await'关键字被正确地放置在异步函数内部。这样就可以在等待Promise对象解析后继续执行代码。 总结:要解决"unexpected reserved word 'await'"的错误,需要将使用'await'关键字的代码放在异步函数中,只有在异步函数中才能正常使用'await'。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值