У меня есть три класса: базовый класс Animal
и подкласс Cat
и класс приложения:
Класс приложения вызывает класс Animal
, который извлекает данные, класс Cat
следует отфильтровать данные и получить данные, относящиеся только к данным Cat
.
App.ts
Разрешает обещание и должно получить кошек, но становится неопределенным, поскольку подкласс создается до разрешения обещания;
this._cats = new Cats();
this._cats.fetchAnimalData().then(() => {
this._cats.getCats(); // returns undefined
});
Animal.ts FetchesДанные о животных
private async _setAnimalsDataContract(): Promise<[]> {
return await ...;
}
public getAnimalData() {
return this._animalData;
}
public setAnimalData(data) {
this._animalData = data;
}
public fetchAnimalData() : Promise<void> {
return this._animalDataPromise
.then((dataSet: IAnimal;[]) => {
this._setAnimalData(dataSet);
}).catch(() => {
throw new Error('...');
});
}
Cat.ts getAnimalData не определена, поскольку базовый класс не завершил выборку
export default class Cat extends Animal {
constructor() {
super();
this._catData = (this._formatCatData(this.getAnimalData()));
}
getCats() {
return this._catData;
}
}
Я, конечно, мог бы создать экземпляр класса Animal, дождаться разрешения обещания, а затем создать экземпляр класса Cat.внутри then
но тогда вообще не имеет смысла делать расширение класса.
Как получить данные обещания базового класса в подклассе после его завершения?