「1分钟--前端07」RxJS介绍

RxJS 是一个函数式编程的库,它通过使用 observable 序列来编写异步和基于事件的程序。

它提供了一个核心类型 Observable,附属类型 (Observer、 Schedulers、 Subjects) 和受 [Array#extras] 启发的操作符 (map、filter、reduce、every, 等等),这些数组操作符可以把异步事件作为集合来处理。

可以把 RxJS 当做是用来处理事件的 Lodash 。


一. 特性

1.纯净性:

使用纯函数,将应用的状态单独隔离出来;

2.流动性:

延时,过滤等流程控制符,可轻松实现函数防抖和节流功能。

3.作为函数的泛化,解决了promise的几个不足

(1)promise在 new实例化时传入的fn是立即执行的,而且无法中断;

而RXjs中Observables是延迟执行,不“调用”它(使用 subscribe)是不会执行的。

订阅Observable类似调用函数

(2)promise的then回调是异步的;RXjs是同步的,像函数一样;


二. Observable和函数的区别

1.函数只能返回一个值

function foo() {
console.log('Hello');
return 42;

return 100; // 死代码,永远不会执行

}

2.Observables可以返回多个值

var foo = Rx.Observable.create(function (observer) {
console.log('Hello');
observer.next(42);
observer.next(100); // “返回”另外一个值
observer.next(200); // 还可以再“返回”值

});

console.log('before');

foo.subscribe(function (x) { console.log(x);

});

console.log('after');


同步输出:

"before"

"Hello"

42

100

200

"after"


3.总结:

func.call() 意思是 "同步地给我一个值"

observable.subscribe() 意思是 "给我任意数量的值,无论是同步还是异步"

以上,函数式编程库RxJS简单介绍

推荐阅读更多精彩内容