通过使用toPromise()等待AsyncSubject

时间:2019-03-07 08:04:18

标签: angular rxjs

我的类使用异步构造,并且由于不支持异步ctor,因此我试图使用一种模式来等待此类对象的构造:

ALPHA

现在,我可以使用以下内容创建对象:

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)是否安全,还是忽略了整个AsyncSubject-Characteristic特性?

0 个答案:

没有答案