gpt4 book ai didi

异步调用后 JavaScript ES6 调用 "super"

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:31:15 26 4
gpt4 key购买 nike

使用 ECMAScript 6 和类时,是否可以在异步调用完成后从扩展类方法调用父类(super class)方法?

这里是代码中问题的摘要:

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);
});
}
}

使用上面的类 Foo.myMethod() 将导致错误,因为 super 不再引用 Foo 的父类(super class)并且在回调中未定义。

我试图在回调之前保留对 super 的引用,并在回调完成后在回调中使用该引用,但这似乎不起作用,例如:

myMethod () {
var mySuper = super;

database.getDataForId('wth4308g40giemwfo', function (err, data) {
mySuper.myMethod(data);
});
}

这可能吗?

最佳答案

箭头函数将保留所有词法引用,而不仅仅是 this,因此您也可以使用一个来访问 super:

myMethod () {
database.getDataForId('wth4308g40giemwfo', (err, data) => {
super.myMethod(data);
});
}

关于异步调用后 JavaScript ES6 调用 "super",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39329442/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com