如何立即从观察者那里获取价值?

How to immediately get value from observer?

我有观察者,它存储一些 DOM 元素树的样式。

此外,我有很多输入,我可以在其中更改此样式。

<input
    type="text"
    [value]="elementData.getSpecificStyle('elementClassName', 'background')"
    (keyup)="elementData.setSpecificStyle('elementClassName', 'background', $event.target.value)"
>

样式服务

public setStyle (clazz: string, styleName: string, styleValue: string): void {
    if (!this._styles[clazz]) {
        this._styles[clazz] = {};
    }

    this._styles[clazz][styleName] = styleValue;

    this.stylesSubject.next(this._styles);
}

private getSpecificStyle (clazz: string, styleName: string): string {
    let result: string = '';

    this.styles.subscribe((styles: Observable<Object>) => {
        result = styles[clazz][styleName];
    });

    return result;
}

观察者中的所有样式,因此,当我想将一些样式值作为输入值时 - 我需要像 getSpecificStyle 方法一样订阅观察者。

这很正常,当我可以异步获取样式时,但在那种情况下我只想立即从观察者那里获取当前值。

此代码工作正常,但我想知道,有什么方法可以替换该代码

let result: string = '';

this.styles.subscribe((styles: Observable<Object>) => {
   result = styles[clazz][styleName];
});

return result;

关于更简单的事情?

styles 是可观察的时,这是不可能的。 Observables 按照设计的方式工作。当一个值可用时,他们会推送一个值。 如果您不想使用 subscribe,则需要将 styles 更改为不 return 可观察。