rxjs-深入理解observable-operators

延迟计算与渐进式取值

Observable 中的 Operators 与数组的 Operators 是有很大的不同的。最重要的两点是 延迟计算渐进式取值

延迟计算

延迟计算,就是所有的 Observable 一定会等到被订阅以后才会开始计算,这与数组是不一样的。

1
2
let source = [1,2,3,4,5]
let example = source.map(x=>x+1)

如上,在数组中,代码运行完成以后,example 中就已经包含运算后的值。

渐进式取值

数组中的 operator 都必须完整的计算出每个元素的返回值并返回一个新的数组才会进行下一个 operator 的计算。

Array-Operators

当是 Observable 中的 Operators 与数组是完全不同的,虽然 operator 会返回一个新的 Observable,但是元素是 渐进取得的,所以每次的计算是一个元素进行到底,而不是计算完全部的元素在返回。

1
2
3
4
let soure = Observable.from([1,2,3])
let example = source.filter(x=>x % 2 === 0)
.map(x=> x +1)
example.subscribe(value=> console.log(value))

整个计算过程如下:

Observable-Operators

每个元素被送出以后就计算到底,在这个过程中不会的等待其它的元素计算,这就是渐进式取值的特点。

参考