Rxjs

250 阅读2分钟

Rxjs

是一套由Observable(əbˈzɜːvəbl/) sequences( /ˈsiːkwəns/)组合非同步行为和事件基础的程序

非同步常见问题

一、Race Condition( /kənˈdɪʃn/) 竞态条件

解释:当我们对同一个资源做多次异步请求读取时,就有可能会发现这个问题,比如说我们发了一个request请求更新使用者资料 然后我们又立即发送一个request请求取使用者资料,这时候第一个request和第二个request先后顺序就会影响到最终的结果。

二、Memory Leak(/ˈmeməri/ ) 内存泄露

解释:很容易被忽略,因为在传统的网站中我们每次换页都是重新刷新重新执行js.但是做成应用程式时Memory Leak就很重要,例如: 做SPA(单页面)网站时,我们是通过js达到切换页面,这种情况下如果我们只对DOM注册监听事件,而没有移除,就有可能 造成Memory Leak,

三、Complex state( /ˈkɒmpleks/ )复杂的状态

解释:比如说我们有个视频只有管理员才可以看,首先我们可能先抓取视频的资源,播放时去验证播放者是否有权限,如果播放后又立即 取消, 这些都是异步执行,这时就会有各种复杂的状态需要处理。

四、Exception Handling ( /Ikˈsepʃn/)例外处理

各种不同的API

各种不同的异步API,他们都有各自不同的写法,基本上所有的异步API都可以用rxjs来处理,更加简单!

例如:监听点击事件但是一次之后不再监听;

原生Javascript:
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) // 只取一次
    .subscribe(console.log);