mirror of
https://github.com/re-rxjs/react-rxjs.git
synced 2025-12-08 18:01:51 +00:00
28 lines
691 B
TypeScript
28 lines
691 B
TypeScript
import { GroupedObservable, Observable, Subscription } from "rxjs"
|
|
|
|
export const getGroupedObservable = <K, T>(
|
|
source$: Observable<Map<K, GroupedObservable<K, T>>>,
|
|
key: K,
|
|
) => {
|
|
const result = new Observable<T>((observer) => {
|
|
let innerSub: Subscription | undefined
|
|
let outterSub: Subscription = source$.subscribe(
|
|
(n) => {
|
|
innerSub = innerSub || n.get(key)?.subscribe(observer)
|
|
},
|
|
(e) => {
|
|
observer.error(e)
|
|
},
|
|
() => {
|
|
observer.complete()
|
|
},
|
|
)
|
|
return () => {
|
|
innerSub && innerSub.unsubscribe()
|
|
outterSub.unsubscribe()
|
|
}
|
|
}) as GroupedObservable<K, T>
|
|
result.key = key
|
|
return result
|
|
}
|