假設我正在開發一個聊天應用程序。我觀察到的threads$
發出每ň秒線程的陣列,觀察到offline$
當一個線程下線成爲了通知,可觀察online$
當一個線程成爲網上通知:組合/合併可觀察對象
enum ConnectionStatus { Offline = 0, Online }
interface Thread {
id: string;
status: ConnectionStatus
}
const threads$ = Observable
.interval(n)
.switchMap(() => Observable.create((observer: Observer<Array<Thread>>) =>
getThreads((threads: Array<Thread>) => observer.next(threads))));
const online$ = Observable.create((observer: Observer<Thread>) =>
onOnline((threadId: string) => observer.next({
id: threadId,
status: ConnectionStatus.Online
})));
const offline$ = Observable.create((observer: Observer<Thread>) =>
onOffline((threadId: string) => observer.next({
id: threadId,
status: ConnectionStatus.Offline
})));
我想下面這這些流合併規則:threads$
應該發射陣列每n秒,但每當online$
或offline$
發出,我想抓住的threads$
最新值(Array<Threads>
),並通過改變一個線程的狀態圖,併發出立即映射集合。
我已經失去了跟蹤,其中Rx的combineLatest
,mergeMap
,zip
和類似的,所以我會很感激,如果有人可以幫助我實現在這種情況下合併(更多的RX-方式)