RxJS: 简单入门

Introduction to RxJS

1. 前言

1.1 什么是RxJS

RxJSReactiveX编程理念的JavaScript版本。ReactiveX来自微软,它是一种针对异步数据流的编程。简单来说,它将一切数据,包括HTTP请求,DOM事件或者普通数据等包装成流的形式,然后用强大丰富的操作符对流进行处理,使你能以同步编程的方式处理异步数据,并组合不同的操作符来轻松优雅的实现你所需要的功能。

1.2 RxJS可用于生产吗?

ReactiveX由微软于2012年开源,目前各语言库由ReactiveX组织维护。RxJSGitHub上已有8782个star,目前最新版本为5.5.2,并持续开发维护中,其中官方测试用例共计2699个。

谁在使用Rx

1.3 RxJS对项目代码的影响?

RxJS中的流以Observable对象呈现,获取数据需要订阅Observable,形式如下:

const ob = http$.getSomeList(); //getSomeList()返回某个由`Observable`包装后的http请求
ob.subscribe((data) => console.log(data));
//在变量末尾加$表示Observable类型的对象。

以上与Promise类似:

const promise = http.getSomeList(); // 返回由`Promise`包装的http请求
promise.then((data) => console.log(data));

实际上Observable可以认为是加强版的Promise,它们之间是可以通过RxJSAPI互相转换的:

const ob = Observable.fromPromise(somePromise); // Promise转为Observable
const promise = someObservable.toPromise(); // Observable转为Promise

因此可以在Promise方案的项目中安全使用RxJS,并能够随时升级到完整的RxJS方案。

1.4 RxJS会增加多少体积?

RxJS(v5)整个库压缩后约为140KB,由于其模块化可扩展的设计,因此仅需导入所用到的类与操作符即可。导入RxJS常用类与操作符后,打包后的体积约增加30-60KB,具体取决于导入的数量。

不要用 import { Observable } from 'rxjs'这种方式导入,这会导入整个rxjs库,按需导入的方式如下:
import { Observable } from 'rxjs/Observable' //导入类
import 'rxjs/add/operator/map' // 导入实例操作符
import 'rxjs/add/observable/forkJoin' // 导入类操作符

2. RxJS快速入门

2.1 初级核心概念

  • Observable
  • Observer
  • Operator

Observable被称为可观察序列,简单来说数据就在Observable中流动,你可以使用各种operator对流进行处理,例如:

const ob = Observable.interval(1000);
ob.take(3).map(n => n * 2).filter(n => n > 2);

第一步代码我们通过类方法interval创建了一个Observable序列,ob作为源会每隔1000ms发射一个递增的数据,即0 -> 1 -> 2。第二步我们使用操作符对流进行处理,take(3)表示只取源发射的前3个数据,取完第三个后关闭源的发射;map表示将流中的数据进行映射处理,这里我们将数据翻倍;filter表示过滤掉出符合条件的数据,根据上一步map的结果,只有第二和第三个数据会留下来。

上面我们已经使用同步编程创建好了一个流的处理过程,但此时ob作为源并不会立刻发射数据,如果我们在map中打印n是不会得到任何输出的,因为ob作为Observable序列必须被“订阅”才能够触发上述过程,也就是subscribe(发布/订阅模式)。

const ob = Observable.interval(1000);
ob.take(3).map(n => n * 2).filter(n => n > 0).subscribe(n => console.log(n));

结果:

2 //第2秒
4 //第3秒

上面代码中我们给subscribe传入了一个函数,这其实是一种简写,subscribe完整的函数签名如下:

ob.subscribe({
    next: d => console.log(d),
    error: err => console.error(err),
    complete: () => console.log('end of the stream')
})

直接给subscribe传入一个函数会被当做是next函数。这个完整的包含3个函数的对象被称为observer(观察者),表示的是对序列结果的处理方式。next表示数据正常流动,没有出现异常;error表示流中出错,可能是运行出错,http报错等等;complete表示流结束,不再发射新的数据。在一个流的生命周期中,errorcomplete只会触发其中一个,可以有多个next(表示多次发射数据),直到complete或者error

observer.next可以认为是Promisethen的第一个参数,observer.error对应第二个参数或者Promisecatch

RxJS同样提供了catch操作符,err流入catch后,catch必须返回一个新的Observable。被catch后的错误流将不会进入observererror函数,除非其返回的新observable出错。

Observable.of(1).map(n => n.undefinedMethod()).catch(err => {
    // 此处处理catch之前发生的错误
    return Observable.of(0); // 返回一个新的序列,该序列成为新的流。
});

2.2 创建可观察序列

创建一个序列有很多种方式,我们仅列举常用的几种:

Observable.of(...args)

Observable.of()可以将普通JavaScript数据转为可观察序列,点我测试

Observable.fromPromise(promise)

Promise转化为Observable点我测试

Observable.fromEvent(elment, eventName)

DOM事件创建序列,例如Observable.fromEvent($input, 'click')点我测试

Observable.ajax(url | AjaxRequest)

发送http请求,AjaxRequest参考这里

Observable.create(subscribe)

这个属于万能的创建方法,一般用于只提供了回调函数的某些功能或者库,在你用这个方法之前先想想能不能用RxJS上的类方法来创建你所需要的序列,点我测试

2.3 合并序列

合并序列也属于创建序列的一种,例如有这样的需求:进入某个页面后拿到了一个列表,然后需要对列表每一项发出一个http请求来获取对应的详细信息,这里我们把每个http请求作为一个序列,然后我们希望合并它们。
合并有很多种方式,例如N个请求按顺序串行发出(前一个结束再发下一个);N个请求同时发出并且要求全部到达后合并为数组,触发一次回调;N个请求同时发出,对于每一个到达就触发一次回调。
如果不用RxJS,我们会比较难处理这么多情形,不仅实现麻烦,维护更麻烦,下面是使用RxJS对上述需求的解决方案:

const ob1 = Observable.ajax('api/detail/1');
const ob2 = Observable.ajax('api/detail/2');
...
const obs = [ob1, ob2...];
// 分别创建对应的HTTP请求。
  1. N个请求按顺序串行发出(前一个结束再发下一个)
Observable.concat(...obs).subscribe(detail => console.log('每个请求都触发回调'));
  1. N个请求同时并行发出,对于每一个到达就触发一次回调
Observable.merge(...obs).subscribe(detail => console.log('每个请求都触发回调'));
  1. N个请求同时发出并且要求全部到达后合并为数组,触发一次回调
Observable.forkJoin(...obs).subscribe(detailArray => console.log('触发一次回调'));

3. 使用RxJS实现搜索功能

搜索是前端开发中很常见的功能,一般是监听<input />keyup事件,然后将内容发送到后台,并展示后台返回的数据。

<input id="text"></input>
<script>
    var text = document.querySelector('#text');
    text.addEventListener('keyup', (e) =>{
        var searchText = e.target.value;
        // 发送输入内容到后台
        $.ajax({
            url: `/search/${searchText}`,
            success: data => {
              // 拿到后台返回数据,并展示搜索结果
              render(data);
            }
        });
    });
</script>

上面代码实现我们要的功能,但存在两个较大的问题:

  • 多余的请求

当想搜索“爱迪生”时,输入框可能会存在三种情况,“爱”、“爱迪”、“爱迪生”。而这三种情况将会发起 3 次请求,存在 2 次多余的请求。

  • 已无用的请求仍然执行

一开始搜了“爱迪生”,然后马上改搜索“达尔文”。结果后台返回了“爱迪生”的搜索结果,执行渲染逻辑后结果框展示了“爱迪生”的结果,而不是当前正在搜索的“达尔文”,这是不正确的。

减少多余请求数,可以用 setTimeout 函数节流的方式来处理,核心代码如下:

<input id="text"></input>
<script>
    var text = document.querySelector('#text'),
        timer = null;
    text.addEventListener('keyup', (e) =>{
        // 在 250 毫秒内进行其他输入,则清除上一个定时器
        clearTimeout(timer);
        // 定时器,在 250 毫秒后触发
        timer = setTimeout(() => {
            console.log('发起请求..');
        },250)
    })
</script>

已无用的请求仍然执行 的解决方式,可以在发起请求前声明一个当前搜索的状态变量,后台将搜索的内容及结果一起返回,前端判断返回数据与当前搜索是否一致,一致才走到渲染逻辑。最终代码为:

<input id="text"></input>
<script>
    var text = document.querySelector('#text'),
        timer = null,
        currentSearch = '';

    text.addEventListener('keyup', (e) =>{
        clearTimeout(timer)
        timer = setTimeout(() => {
            // 声明一个当前所搜的状态变量
            currentSearch = '书'; 

            var searchText = e.target.value;
            $.ajax({
                url: `/search/${searchText}`,
                success: data => {
                    // 判断后台返回的标志与我们存的当前搜索变量是否一致
                    if (data.search === currentSearch) {
                        // 渲染展示
                        render(data);
                    } else {
                        // ..
                    }
                }           
            });
        },250)
    })
</script>

上面代码基本满足需求,但代码开始显得乱糟糟。我们来使用RxJS实现上面代码功能,如下:

var text = document.querySelector('#text');
var inputStream = Rx.Observable.fromEvent(text, 'keyup') //为dom元素绑定'keyup'事件
                    .debounceTime(250) // 防抖动
                    .pluck('target', 'value') // 取值
                    .switchMap(url => Http.get(url)) // 将当前输入流替换为http请求
                    .subscribe(data => render(data)); // 接收数据

RxJS能简化你的代码,它将与流有关的内部状态封装在流中,而不需要在流外定义各种变量来以一种上帝视角控制流程。Rx的编程方式使你的业务逻辑流程清晰,易维护,并显著减少出bug的概率。

个人总结的常用操作符:

类操作符(通常为合并序列或从已有数据创建序列)
合并 forkJoinmergeconcat
创建 offromfromPromisefromEventajaxthrow
实例操作符(对流中的数据进行处理或者控制流程)
mapfilter,switchMaptoPromisecatchtaketakeUntiltimeoutdebounceTimedistinctUntilChangedpluck
对于这些操作符的使用不再详细描述,请参阅网上资料。

中文官网 http://cn.rx.js.org/
附上个人翻译的一些文章

data:image/png;base64,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

最后打个广告,蚂蚁金服大安全风控+团队招人,前端后台都要,简历发送至huitong.zht@antfin.com。

参考文章:构建流式应用:RxJS 详解

posted @ 2021-01-18 09:46  一纸荒唐  阅读(3452)  评论(0编辑  收藏  举报