Javascript 如何在promise-Vue中使用异步/等待

Javascript 如何在promise-Vue中使用异步/等待,javascript,vue.js,Javascript,Vue.js,以下是我的方法: async sendEmail() { this.isActive = true this.$validator.validate().then(result => { if (result) { await axios.post('url', data) this.isActive = false } }) } 我在isActive=true时显示加载程序,但在中使用await。$validator向我抛出一个关于单

以下是我的方法:

async sendEmail() {
  this.isActive = true
  this.$validator.validate().then(result => {
    if (result) {
      await axios.post('url', data)
      this.isActive = false
    }
  })
}
我在
isActive=true
时显示加载程序,但在
中使用
await
。$validator
向我抛出一个关于单词
await
的错误。为了验证,我使用


如何在
$validator
promise中使用wait?

在非异步函数中不能直接使用
wait
关键字。您直接在匿名函数中使用
wait
关键字,该函数是
then
的参数;此匿名函数不是异步的,因此存在语法错误

下面是我将如何重写此函数:

async sendEmail() {
  this.isActive = true
  let result = await this.$validator.validate();
  if (result) await axios.post('url', data);
  this.isActive = false;
}
我发现当您已经在
异步
函数中时,避免使用
然后
会更干净


顺便说一句,我不确定
数据
变量的定义位置。

不能在非异步函数中直接使用
wait
关键字。您直接在匿名函数中使用
wait
关键字,该函数是
then
的参数;此匿名函数不是异步的,因此存在语法错误

下面是我将如何重写此函数:

async sendEmail() {
  this.isActive = true
  let result = await this.$validator.validate();
  if (result) await axios.post('url', data);
  this.isActive = false;
}
我发现当您已经在
异步
函数中时,避免使用
然后
会更干净


顺便说一句,我不确定在哪里定义了
数据
变量。

只能在
async
函数中使用
wait
。因此,尝试将其更改为:
this.$validator.validate()。然后(异步(结果)=>{}
@adiga,没有错误,但它不能按预期工作。在axios请求后,它应该将
isActive
设置为false,但
isActive
始终为true。您只能在
async
函数中使用
wait
。因此,尝试将其更改为:
this.$validator.validate()。然后(async(result)=>{
@adiga,没有错误,但它不能按预期工作。在axios请求后,它应该将
isActive
设置为false,但
isActive
始终为true。
data
已定义,没有问题。现在它可以工作了,谢谢。顺便问一句,在
async
函数中使用
try{}catch{}
可以吗?例如
如果(结果){try{…}catch{…}}
Yes
try
catch
将完全按照您的预期工作!
data
已定义,没有问题。现在它可以工作了,谢谢。顺便问一下,在
if(result){try}catch}函数中使用
try{}catch{code>可以吗
Yes
try
catch
将完全按照您的预期工作!