Rxjs - Operators - Partition

上一篇写的If,听起来很像我们常用的

那个相当于 条件符合 就赋值的情况,就是处理的是 数据源的判断

这次看的更像 if()else()

Signature

export declare function partition<T>(predicate: (value: T) => boolean, thisArg?: any): [Observable<T>, Observable<T>];
export interface PartitionSignature<T> {
(predicate: (value: T) => boolean, thisArg?: any): [Observable<T>, Observable<T>];
}
  • 条件function 和 this参数
  • 返回两个流的数组
  • 第一个是符合条件的
  • 第二个是剩下不符合的,相当于else
var clicks = Rx.Observable.fromEvent(document, 'click');
var parts = clicks.partition(ev => ev.target.tagName === 'DIV');
var clicksOnDivs = parts[0];
var clicksElsewhere = parts[1];
clicksOnDivs.subscribe(x => console.log('DIV clicked: ', x));
clicksElsewhere.subscribe(x => console.log('Other clicked: ', x));