【问题标题】:RxJS: Emit new value whenever all subjects emit trueRxJS:只要所有主题都发出真值,就发出新值
【发布时间】:2020-04-21 10:30:50
【问题描述】:

我有两个科目:networkStateSubjectauthStateSubject

networkStateSubject 发出 boolean 值:

    true 如果启用了网络连接,

    false 如果网络连接被禁用。

authStateSubject 发出 boolean 值:

    true 如果用户已登录,

    false 如果用户退出。

我需要结合这两个主题,以便只要它们的两个值都是true,就会从组合的 observable 中发出新值 (void)

【问题讨论】:

    标签: rxjs observable subject subject-observer


    【解决方案1】:

    您可以使用combineLatestfilter 来检查这两个值。

    const connectedAndAuth$ = combineLatest([networkStateSubject, authStateSubject])
       .pipe(
          filter(([isConnected, isAuth]) => isConnected && isAuth),
          map(_ => 1) //what do you mean emit a void value?
       );
    

    【讨论】:

    • 也许您可以将map(_ => 1) 替换为mapTo(1)
    • 我的意思是发射值的类型必须是无效的。例如主题、承诺等..
    【解决方案2】:

    我会将combineLatest 与选择器networkStateSubject && authStateSubject 一起使用,然后过滤真正的选择器

    【讨论】:

      猜你喜欢
      • 2021-12-07
      • 1970-01-01
      • 2020-11-06
      • 2017-04-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多