RxJS-Operators(操作符)
操作符是Observable类型上的方法,比如.map(),.filter(),.merge()。当操作符被调用时,它们不会改变已经存在Observable示例,而是返回一个新的Observable。它的subscription逻辑基于第一个Observable。
操作符是函数,它基于当前的Observable创建一个新的Observable。这是一个无副作用的操作:前面的Observable保持不变。
操作符本质上是一个纯函数 (pure function),它接收一个 Observable 作为输入,并生成一个新的 Observable 作为输出。订阅输出 Observalbe 同样会订阅输入 Observable。
示例
functionmultiByTen(input){varoutput=Rx.Observable.create(functionsubscribe(observer){input.subscribe({next: v=>{observer.next(10*v)},error: err=>{observer.error(err)},complete: ()=>{observer.complete()}})})returnoutput;}varobservable=Rx.Observable.from([1,2,3,4])varoutput=multiByTen(observable);output.subscribe(x=>{console.log(x)// 10,20,30,40})订阅output会导致input Observable 也被订阅。被称之为“操作符订阅链”。
实例操作符 VS 静态操作符
通常提到操作符时,我们指的是实例操作符,它是Observable实例上的方法。
将multiplyByTen改造为实例操作符:
Rx.Observable.prototype.multiByTen=function(){varinput=this;varoutput=Rx.Observable.create(functionsubscribe(observer){input.subscribe({next: v=>{observer.next(10*v)},error: err=>{observer.error(err)},complete: ()=>{observer.complete()}})})returnoutput;}实例操作符是使用this关键字来指代输入的 Observable 的函数。
使用实例操作符
varobservable=Rx.Observable.from([1,2,3,4]).Rx.Observable.prototype.multiByTen();observable.subscribe(x=>{console.log(x)// 10, 20, 30, 40})除了实例操作符,还有静态操作符,它们是直接附加到 Observable 类上的。静态操作符在内部不使用 this 关键字,而是完全依赖于它的参数
静态操作符是附加到Observable类上的纯函数,通常用来从头开始创建Observable。
最常用的静态操作符类型是所谓的创建操作符。它们只接收非Observable参数,比如数字,然后创建一个新的 Observable ,而不是将一个输入 Observable 转换为输出 Observable。
此外,还有一些组合操作符也可能是静态的,比如merge,combineLatest,concat等。这些作为静态运算符是有道理的,因为它们将多个 Observables 作为输入,而不仅仅是一个。
示例
varobservable1=Rx.Observable.interval(1000);varobservable2=Rx.Observable.interval(400);varmerged=Rx.Observable.merge(observable1,observable2);
操作符分类
创建操作符
转换操作符
过滤操作符
组合操作符
错误处理操作符
工具操作符
条件操作符
数学操作符
RxJS-Operators(操作符)
操作符是Observable类型上的方法,比如
.map(),.filter(),.merge()。当操作符被调用时,它们不会改变已经存在Observable示例,而是返回一个新的Observable。它的subscription逻辑基于第一个Observable。操作符本质上是一个纯函数 (pure function),它接收一个 Observable 作为输入,并生成一个新的 Observable 作为输出。订阅输出 Observalbe 同样会订阅输入 Observable。
示例
订阅output会导致input Observable 也被订阅。被称之为“操作符订阅链”。
实例操作符 VS 静态操作符
通常提到操作符时,我们指的是实例操作符,它是Observable实例上的方法。
将multiplyByTen改造为实例操作符:
实例操作符是使用this关键字来指代输入的 Observable 的函数。
使用实例操作符
除了实例操作符,还有静态操作符,它们是直接附加到 Observable 类上的。静态操作符在内部不使用 this 关键字,而是完全依赖于它的参数
最常用的静态操作符类型是所谓的创建操作符。它们只接收非Observable参数,比如数字,然后创建一个新的 Observable ,而不是将一个输入 Observable 转换为输出 Observable。
此外,还有一些组合操作符也可能是静态的,比如
merge,combineLatest,concat等。这些作为静态运算符是有道理的,因为它们将多个 Observables 作为输入,而不仅仅是一个。示例
操作符分类
创建操作符
转换操作符
过滤操作符
组合操作符
错误处理操作符
工具操作符
条件操作符
数学操作符