我希望隱藏通過觀察到的運營商,以便橫穿integrety被保持的數據的一部分。I/O關係可觀測量
例如,如果我有一個像{ private, public }
數據對象和我想做的事:
- 採摘
public
屬性,並將其傳遞到自定義流custom$
custom$
後,已經完成了我想恢復關係,以便我有一個對象{ private, data }
,其中數據是custom$
流的結果。
我不想使用concatMap
,因爲custom$
可能會阻塞傳入的數據並使流緩慢。
我目前使用以下,但它似乎很繁瑣,感覺就像我做錯了什麼:
console.clear();
const input$ = new Rx.Subject();
const custom = data$ => data$.switchMap(
({ value, delay }) => Rx.Observable.of(`data ${value}`).delay(delay)
);
const out$ = input$.mergeMap(
({ secret, data }) =>
Rx.Observable.zip(
Rx.Observable.of(data).let(data$ => custom(data$)),
Rx.Observable.of(secret)
));
out$.subscribe(([data, secret]) => console.log(data, '=', secret));
input$.next({ secret: 1, data: { value: 1, delay: 4000 }});
input$.next({ secret: 2, data: { value: 2, delay: 1000 }});
input$.next({ secret: 3, data: { value: 3, delay: 3000 }});
<script src="https://unpkg.com/rxjs/bundles/Rx.min.js"></script>
有沒有更簡單/更理智的方式來做到這一點?
謝謝!我現在感覺非常傾倒:-)永遠盯着文檔,並沒有注意到有一個選擇器功能。 –