获取 Observable 和 Behavior Subject 的最新值

Get latest value of an Observable and a Behaviour Subject

我有一个可观察对象和一个行为对象。我想获取它们的最新值,检查它们是否均为真并将结果分配给可观察对象。

  1. Observable 将 select 来自 NgRx Store 的布尔值:

    this.i18nStateService.defaultMarketChangeTriggered()
    
  2. 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=>{});