9.skip,takeLast,last,concat,startWith,merge


九.skip,takeLast,last,concat,startWith,merge

skip

skip(x) 跳过前 x 个元素 ,与take(x) 正好相反, 但原本元素的等待时间仍然存在.

var source = Rx.Observable.interval(1000);
var example = source.skip(3);

example.subscribe({
    next: (value) => { console.log(value); },
    error: (err) => { console.log('Error: ' + err); },
    complete: () => { console.log('complete'); }
});
// 3
// 4
// 5...
source : ----0----1----2----3----4----5--....
                    skip(3)
example: -------------------3----4----5--...

takeLast

takeLast(x) 取后 X 个元素, 但需要等待整个 Observable 完成(complete),再同步输出.

var source = Rx.Observable.interval(1000).take(6);
var example = source.takeLast(2);

example.subscribe({
    next: (value) => { console.log(value); },
    error: (err) => { console.log('Error: ' + err); },
    complete: () => { console.log('complete'); }
});
// 4
// 5
// complete
source : ----0----1----2----3----4----5|
                takeLast(2)
example: ------------------------------(45)|

last

last() 取最后一个元素,与takeLast(1)效果一致,需要等待整个 Observable 完成.再同步输出.

concat

concat(Observable1,Observable2,....) , 与 concatAll 一样,必须等待前一个 observable 完成才会继续下一个.

var source = Rx.Observable.interval(1000).take(3);
var source2 = Rx.Observable.of(3)
var source3 = Rx.Observable.of(4,5,6)
var example = source.concat(source2, source3);

example.subscribe({
    next: (value) => { console.log(value); },
    error: (err) => { console.log('Error: ' + err); },
    complete: () => { console.log('complete'); }
});
// 0
// 1
// 2
// 3
// 4
// 5
// 6
// complete
source : ----0----1----2|
source2: (3)|
source3: (456)|
            concat()
example: ----0----1----2(3456)|

startWith

startWith(x) observable 一开始就同步发送一个值 x,常用于保存 函数的起始状态.

source : ----0----1----2----3--...
                startWith(0)
example: (0)----0----1----2----3--...

merge

merge(Observable1,Observable2,....) 并行所有Observable,内部所有输入都会立刻被输出,
concat一样是合并 Observable ,但是一个并行一个串行.

总结

准备停止这个系列的更新了,因为感觉台湾大佬的文章讲的函数并不是很详细易懂,但也学会了很多.

毕竟这是16年的文章,受到了翻译以及台湾那边的用词习惯问题的干扰.

之后准备自己直接看中文官网,自己总结文章,因此这个笔记篇章到此结束.

如果有人关注我的笔记的话,十分感谢.


文章作者: 罗紫宇
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 罗紫宇 !
  目录