alian926 / daily

学习计划以及总结
0 stars 0 forks source link

21.9.9。驴子鼻子上的胡萝卜便是一种最高的智慧。 #18

Open alian926 opened 3 years ago

alian926 commented 3 years ago

rxjs

Reactive Extensions(Rx)

一组可以用来处理 非同步事件 的JavaScript函数库.

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

如:网络请求,setTimeout,service worker, Promise, dom事件,css动画

异步常见的问题

竞态条件: 例如发送Request获取数据列表,然后又立即发送了另一个,这时候第一个和第二个Request的先后顺序可能会影响结果展示。

内存泄漏:例如一些事件监听注册,在相关组件卸载时没有移除。

复杂状态:例如有一部付费用户才能播放的影片,先获取影片资料,在播放时候验证使用者权限,而使用者播下播放后又立即取消。

异常捕获,try/catch可以轻松的捕获同步的异常,对于非同步的复杂行为,就很复杂。

核心概念

例子

vanilla js

var handler = (e) => {
    console.log(e);
    document.body.removeEventListener('click', handler); // 結束監聽
}

// 註冊監聽
document.body.addEventListener('click', handler);

rxjs

Rx.observable
    .fromEvent(document.body, 'click')
    .take(1)
    .subsribe(console.log)