将 2 个 observables 合并为 1,条件为 angular

combine 2 observables into 1 with condition in angular

我有一个 ionic-angular 应用程序,它从 google firestore 加载 2 个 observable。

Observable A returns 对象数组(组)。 Observable B returns 对象(联系人)数组。

group = [ name: string, adminID: string ]
contact = [ name: string, userID: string ]

现在我想将这两个订阅与以下条件结合起来:

if ( group.adminID = contact.userID ) {
   group.adminData = contact
}

和return这是一个数组。

我用 combineLatest 试过了,但我对 rxjs 很陌生,没有找到解决方案。 我也不确定 combineLatest 是否适用于这种情况,但我认为这对专业人士来说不是一项艰巨的任务!

您可以使用 zip

Observable.zip(groupObservable, contactObservable).subscribe(
  ([group, contact]) => {
    if ( group.adminID = contact.userID ) {
      group.adminData = contact
    }
  }
);

根据您的要求,您也可以使用 combineLatest。不同之处在于 zip 在推送之前等待所有可观察对象发出一个值,而 combineLatest 将推送新值,即使其中一个可观察对象发出一个值,前提是两个可观察对象已经至少发出一个值值。

因为你正在使用Observables,你可以使用Pipe然后Map来合并两个数组

https://rxjs-dev.firebaseapp.com/guide/operators

也许这个答案对您有帮助: