總結的很到爲!原文地址!收藏下,已被須要時查看!javascript
原文連接: netbasal.com/rxjs-six-op…java
// 模擬 HTTP 請求
const getPostOne$ = Rx.Observable.timer(3000).mapTo({id: 1});
const getPostTwo$ = Rx.Observable.timer(1000).mapTo({id: 2});
Rx.Observable.concat(getPostOne$, getPostTwo$).subscribe(res => console.log(res));
複製代碼
當順序很重要時,使用此操做符,例如當你須要按順序的發送 HTTP 請求時。git
forkJoin
是 Rx 版的 Promise.all()
。github
const getPostOne$ = Rx.Observable.timer(1000).mapTo({id: 1});
const getPostTwo$ = Rx.Observable.timer(2000).mapTo({id: 2});
Rx.Observable.forkJoin(getPostOne$, getPostTwo$).subscribe(res => console.log(res))
複製代碼
當你須要並行地運行 Observables 時使用此操做符。數組
const post$ = Rx.Observable.of({id: 1});
const getPostInfo$ = Rx.Observable.timer(3000).mapTo({title: "Post title"});
const posts$ = post$.mergeMap(post => getPostInfo$).subscribe(res => console.log(res));
複製代碼
首先,咱們得理解 Observables 世界中的兩個術語:post
post$
Observable 。getPostInfo$
Observable 。// 追蹤頁面滾動增量
Rx.Observable
.fromEvent(document, 'scroll')
.map(e => window.pageYOffset)
.pairwise()
.subscribe(pair => console.log(pair)); // pair[1] - pair[0]
複製代碼
頁面滾動…ui
從輸入 Observable 的第二個值開始觸發。spa
const clicks$ = Rx.Observable.fromEvent(document, 'click');
const innerObservable$ = Rx.Observable.interval(1000);
clicks$.switchMap(event => innerObservable$)
.subscribe(val => console.log(val));
複製代碼
在咱們的示例中,每次我點擊頁面的時,先前的 interval
訂閱都會取消,而後開啓一個新的。code
const intervalOne$ = Rx.Observable.interval(1000);
const intervalTwo$ = Rx.Observable.interval(2000);
Rx.Observable.combineLatest(
intervalOne$,
intervalTwo$
).subscribe(all => console.log(all));
複製代碼
例如當你須要處理應用中的過濾器時,此操做符很是有用。rxjs
若是你想了解更多關於 Observables 的內容,能夠閱讀個人文章: