Rxjs
在响应式编程中,Observable可能是Promise的后续
ReactiveX = 带迭代器的观察者模式 + 用集合的函数编程,旨在管理序列事件。
Rxjs 核心
- Observable 代表可调用的预期值或事件集合
- Observer 一个知晓如何监听被Observable传递值的回调集合
- Subscription 决定Observable产值能否被取消
- Operators 纯函数
- Subject 等价于事件发生器EventEmitter,将事件或值广播
- Schedulers 控制并发的中央派发器,可用setTimeout 或 requestAnimationFrame 或其它协调并行计算
解析
与Promise思路相同,一般不是现在能用且可用的,都是基于未来可期的事件编程,但Obserable多值可取消可处理。
Observable 看起来像生产者,但只有调用subscribe才产值
示例
js
document.addEventListener('click', () => console.log('Clicked!'));
rxjs
import { fromEvent } from 'rxjs';
fromEvent(document, 'click').subscribe(() => console.log('Clicked!'));
flow
js
let count = 0;
let rate = 1000;
let lastClick = Date.now() - rate;
document.addEventListener('click', () => {
if (Date.now() - lastClick >= rate) {
console.log(`Clicked ${++count} times`);
lastClick = Date.now();
}
});
rxjs
import { fromEvent } from 'rxjs';
import { throttleTime, scan } from 'rxjs/operators';
fromEvent(document, 'click')
.pipe(
throttleTime(1000),
scan(count => count + 1, 0)
)
.subscribe(count => console.log(`Clicked ${count} times`));
本作品采用《CC 协议》,转载必须注明作者和本文链接