请考虑以下代码段:
import numpy as np
from scipy.interpolate import splprep, splev
import matplotlib.pyplot as plt
X = np.array([1, 3, 6, 8, 5])
Y = np.array([1, 8, 4, 4, 1])
pts = np.vstack((X, Y))
# Find the B-spline representation of an N-dimensional curve
tck, u = splprep(pts, s=0.0)
u_new = np.linspace(u.min(), u.max(), 1000)
# Evaluate a B-spline
x_new, y_new = splev(u_new, tck)
plt.plot(x_new, y_new, 'b--')
plt.show()
工作正常。但是,如果该函数改为异步执行,则没有其他更改:
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() => {
答案 0 :(得分:2)
问:这对您有用吗?
class Foo {
async method () {
console.log('method');
}
}
const f = new Foo();
f.method();
答案 1 :(得分:2)
异步函数可以在类字段中吗?
是的
//Without BabelJS / ES2015
class Foo {
method = async () => {
console.log('method');
}
}
const f = new Foo();
f.method();
使用ES2015编译器时,异步函数是否可以在类字段中?
不。
//Without BabelJS / ES2015
class Foo {
method = async () => {
console.log('method');
}
}
const f = new Foo();
f.method();
async
与ECMAScript 2017 (ECMA-262)一起引入。
在代码段中,您启用了使用Babel / ES 2015 ,该日期早于async
。
答案 2 :(得分:1)
根据mozilla,IE中不支持此语法,因为这可能是您在此处出现错误,第二个示例工作是在chrome中。
class Foo {
method = async () => {
console.log('method');
}
}
const f = new Foo();
f.method();