【发布时间】:2019-07-16 01:59:24
【问题描述】:
考虑以下 sn-p:
class Foo {
method = () => {
console.log('method');
}
}
const f = new Foo();
f.method();
工作得很好。但是,如果函数改为异步,没有其他更改:
class Foo {
method = async () => {
console.log('method');
}
}
const f = new Foo();
f.method();
这会导致语法错误。无论是否使用箭头函数都会发生:
class Foo {
method = function() {
console.log('method');
}
}
const f = new Foo();
f.method();
class Foo {
method = async function() {
console.log('method');
}
}
const f = new Foo();
f.method();
是我的语法不正确,还是类字段中简单地禁止了异步函数?
(当然,原型上的普通异步方法也是可能的,但我问的是类字段中的异步函数为什么/如何工作)
接受async method() => { 的评论建议也不起作用:
class Foo {
async method() => {
console.log('method');
}
}
const f = new Foo();
f.method();
【问题讨论】:
-
您绝对应该在问题中提及您在 sn-ps 中启用了 Use Babel。没有它,您的代码可以正常工作。
Uncaught SyntaxError: Inline Babel script: Unexpected token (3:20)
标签: javascript async-await ecmascript-next class-fields