获取 Observable 和 Behavior Subject 的最新值
Get latest value of an Observable and a Behaviour Subject
我有一个可观察对象和一个行为对象。我想获取它们的最新值,检查它们是否均为真并将结果分配给可观察对象。
Observable 将 select 来自 NgRx Store 的布尔值:
this.i18nStateService.defaultMarketChangeTriggered()
BehaviourSubject 也是一个布尔值
this.cookieService.isCookieLayerConfirmed$
这是我的方法。
this.result$ = this.i18nStateService.defaultMarketChangeTriggered()
.pipe(
map(defaultMarketChangedTriggered => defaultMarketChangedTriggered && !this.cookieService.isCookieLayerConfirmed$)
);
我认为您需要一种组合方法。尝试使用 combineLatest
.
import { combineLatest } from 'rxjs';
this.result$ = combineLatest(this.i18nStateService.defaultMarketChangeTriggered(),
this.cookieService.isCookieLayerConfirmed$).pipe(
// pluck the combination of those two observables individually to these variables
map(([defaultMarketChangeTriggered, isCookieLayerConfirmed]) => defaultMarketChangeTriggered && isCookieLayerConfirmed),
);
有很多运算符可以组合或合并可观察结果,我认为 Zip 运算符应该是您正在寻找的。
它将两个或多个可观察结果合并为一个流。
import {zip} from "rxjs/observable/zip";
zip(this.i18nStateService.defaultMarketChangeTriggered(), this.cookieService.isCookieLayerConfirmed$).subscribe(t=>{});
我有一个可观察对象和一个行为对象。我想获取它们的最新值,检查它们是否均为真并将结果分配给可观察对象。
Observable 将 select 来自 NgRx Store 的布尔值:
this.i18nStateService.defaultMarketChangeTriggered()
BehaviourSubject 也是一个布尔值
this.cookieService.isCookieLayerConfirmed$
这是我的方法。
this.result$ = this.i18nStateService.defaultMarketChangeTriggered()
.pipe(
map(defaultMarketChangedTriggered => defaultMarketChangedTriggered && !this.cookieService.isCookieLayerConfirmed$)
);
我认为您需要一种组合方法。尝试使用 combineLatest
.
import { combineLatest } from 'rxjs';
this.result$ = combineLatest(this.i18nStateService.defaultMarketChangeTriggered(),
this.cookieService.isCookieLayerConfirmed$).pipe(
// pluck the combination of those two observables individually to these variables
map(([defaultMarketChangeTriggered, isCookieLayerConfirmed]) => defaultMarketChangeTriggered && isCookieLayerConfirmed),
);
有很多运算符可以组合或合并可观察结果,我认为 Zip 运算符应该是您正在寻找的。 它将两个或多个可观察结果合并为一个流。
import {zip} from "rxjs/observable/zip";
zip(this.i18nStateService.defaultMarketChangeTriggered(), this.cookieService.isCookieLayerConfirmed$).subscribe(t=>{});