Rxjs - Operators - First

因为最近看Haskell, 开头收head tail 什么.
所以顺便想看看Rxjs里相关的operator

Signature

public first(
predicate: function(value: T, index: number, source: Observable<T>): boolean,
resultSelector: function(value: T, index: number): R,
defaultValue: R): Observable<T | R>
  • 第一个function相当于filter操作
  • 第二个相当于把filter后第一个元素 做了一个map
  • 没match到的默认值
 var source = Rx.Observable.range(0, 10).
first(
function (v, index, obs) { return v > 5 },
function (value, index) { return value * 10 },
20);

var subscription = source.subscribe(
function (x) {
console.log('Next: %s', x);
},
function (err) {
console.log('Error: %s', err);
},
function () {
console.log('Completed');
});

第一个参数里的obs是调用first的那个Observable.很多Operator都能拿到这个参数