Observable
对象代表的是一个数据流,在实际开发场景中,创建Observable
对象并不是每次都通过直接调用Observable构造函数来创造数据流对象的。
对于复杂的逻辑处理,往往会先进行对数据流进行筛选处理,处理之后数据才会接入Observer,操作符的主要用途也是去过滤数据的。
![](https://img.haomeiwen.com/i25524960/9444215b3e13a4fe.png)
对于原数据流的处理,每个操作符之间是独立的,因此,我们可以对不同的操作符进行随意的组合使用
// 首先需要现在script标签下深链导入
import { Observable, range, filter, map, of } from 'rxjs';
// 数组数据转为立方
arrCube(array) {
const theSubscribe = observer => {
array.forEach(item => {
observer.next(item);
})
}
const source$ = Observable.create(theSubscribe);
source$.map(x => x*x*x).subscribe(console.log);
}
Observable.create
返回的就是一个新的Observable对象,因为create是Observable的类函数,所以使⽤的时候⽆需Observable对象 实例,这是静态类型操作符的特点。
Observable.create = function(subscribe) {
return new Observable(subscribe);
}
后面的map就是一个操作符,这种操作符和ES6中的map操作类似,ES6中是通过一个函数对该数组进行操作返回的是一个新的数组。
RXJS中与ES6的map不同之处是,ES6中是对数组元素映射为一个新的值,再将新的值组合成一个新的数组,而RXJS中是对数组元素映射为新的值,而后产生一个新的Observable对象,接着发送给Obsrever。
![](https://img.haomeiwen.com/i25524960/fac0bbdb0ad7f718.png)
网友评论