Мой класс использует асинхронную конструкцию, и поскольку асинхронные операторы не поддерживаются, я пытаюсь использовать шаблон, чтобы иметь возможность ожидать конструирование таких объектов:
export class BaseStationLayer extends BaseLayer {
// @ts-ignore
public Ready!: AsyncSubject<BaseStationLayer> = new AsyncSubject<BaseStationLayer>();
constructor() {
this.create().then(res => {
this.Ready!.next(this);
this.Ready!.complete();
}).catch(err => { this.Ready!.next(null); this.Ready!.complete(); });
}
async create() {
try {
await this.createLayer(...);
await this.pingService();
} catch (ex) {
throw ex;
}
}
}
Теперь я могу использовать следующее для создания объектов:
const layer = new BaseStationLayer();
layer.Ready!.subscribe(ev => {});
однако я бы хотел использовать синтаксис await layer.Ready!
.
Безопасно ли использовать layer.Ready!.toPromise()
для преобразования AsyncSubject
(или, альтернативно, ReplaySubject
), или игнорируется весь AsyncSubject-Characteristic?