问题:这个报错是在Vscode编辑中出现一个红色波浪线,鼠标放上去提示:Parsing error: await is a reserved word, 解析错误:await是一个保留字,说明编辑器没有识别这个,当成一个关键字了.
因为在表单校验外部给函数加了一个async关键字,想在回调函数中用写同步代码,但是报错。
// 保存
async save() {
this.$refs.form.validateForm((valid) => {
if (valid) {
// 加await目的是等保存完成后再刷新列表await /* 此处async 报错*/ this.saveRecord()this.$emit('closeModal')this.reset()}})
}
修改之后:
save() {
// 此时应将async定义在回调函数(匿名函数)前面,
// 外部函数和回调函数形成了两个独立的作用域,
// 定义在外部的函数和回调函数形成了两个块级作用域,
// 此时,await和aysnc不在同一个作用域中,导致无法配对,报错this.$refs.form.validateForm(async (valid) => {
if (valid) {
// 加await目的是等保存完成后再刷新列表await /* 此处async 没有报错*/ this.saveRecord()this.$emit('closeModal')this.reset()}})
}
总结:如果想在回调函数内部写同步代码,则需要将async关键字放在回调函数前面,使async和await在同一个作用域内