Rob*_*ans 3 javascript class ecmascript-6
使用ECMAScript 6和类时,是否可以在异步调用完成后从扩展类方法调用超类方法?
以下是代码中问题的摘要:
class Foo {
constructor () {
}
myMethod (data) {
console.log('Data was: ', data);
}
}
class Bar extends Foo {
constructor () {
super();
}
myMethod () {
database.getDataForId('wth4308g40giemwfo', function (err, data) {
super.myMethod(data);
});
}
}
Run Code Online (Sandbox Code Playgroud)
使用上面的类Foo.myMethod()将导致错误,因为super不再引用Foo的超类,并且在回调中未定义.
我试图在回调之前保留对super的引用,并在回调完成后在回调中使用该引用,但这似乎不起作用,例如:
myMethod () {
var mySuper = super;
database.getDataForId('wth4308g40giemwfo', function (err, data) {
mySuper.myMethod(data);
});
}
Run Code Online (Sandbox Code Playgroud)
可能吗?
箭头函数将保留所有词汇引用,而不仅仅是this,因此您也可以使用它来访问super:
myMethod () {
database.getDataForId('wth4308g40giemwfo', (err, data) => {
super.myMethod(data);
});
}
Run Code Online (Sandbox Code Playgroud)