繁体   English   中英

获取 Observable 和 Behavior Subject 的最新值

[英]Get latest value of an Observable and a Behaviour Subject

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

  1. 可从 NgRx 商店中观察到 select 和 boolean :

     this.i18nStateService.defaultMarketChangeTriggered()
  2. BehaviourSubject 也是一个 boolean

     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 运算符应该是您正在寻找的。 它合并了两个或多个可观察结果二一 stream。

import {zip} from "rxjs/observable/zip";

zip(this.i18nStateService.defaultMarketChangeTriggered(), this.cookieService.isCookieLayerConfirmed$).subscribe(t=>{});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM