rxjs

最新文章

Rxjs expand的用法分析

Rxjs的expand()函数声明:public expand(project: function(value: T, index: number), concurrent: number, scheduler: Scheduler): Observable expand()会递归调用project函数,project函数把源值映射为一个Observable,每次递归

初步理解RxJs

         学习是一个由浅入深的过程,如果能够理解并掌握二八原则(帕累托法则),那么我们对知识的学习定会事半功倍,甚至事半多倍。对基础知识的理解决定了对知识理解的深度。RxJs定义        RxJS是ReactiveX在JavaScript上的一个派生。ReactiveX是一个应用比较广泛的响应式

RxJs——创建型操作

我们在使用RxJs中,知道RxJs的操作分为两类,一类是创建型,比如of(),fromEvent(),from()等,还有一类是操作型,比如map(),filter()。而这两类操作的基础和心是一个叫做Observable的对象,如果对Observable不甚理解,需要快速理解的可以查看这一篇今天我们来学习第一类,尝试着自己实现一次。of()这个操作接收数组参数,返回一个Observable,一旦

RxJs——操作型

我们在使用Observable的时候,常常会涉及到一些操作,比如map(),filter()等,为了理解原理,今天我们在前几节(初步理解RxJs , RxJs——创建型操作 )的基础上,用两种不同的方式实现以上两个函数,希望能给大家提供借鉴。map代码实现废话不说,先来实现mapmap(fn) { return new MyObservable(observer => {

RxJs——map,filter第二种实现

上一节我们实现了map和filter函数,我们将这些函数都挂载在MyObservable对象上,这里存在一个问题,类似map和filter这样的操作型函数很多,所以不可能将他们都挂载在MyObservable对象上,因此,这里出现了第二种实现。 这些操作函数能串联起来的本质就是能够形成嵌套调用,因此我想到了使用pipe,pipe的本质是接收一个 RxJS 操作符的运行结果作为参数,并返回

RxJs——subject理解一

什么是subject首先我们来理解什么是subject,按照官方的定义:A Subject is a special type of Observable that allows values to be multicasted to many Observers.Subjects are like EventEmitters.从定义我们看出subject就是一种允许发送值到多个观察者的特殊类型的

RxJs——Subject理解二

上一节我们对subject有了初步理解,今天我们继续学习subjectReplaySubject介绍这个ReplaySubject之前,我们说下一种使用场景1、我们创建一个subject2、在应用的某个地方,我们向subject推送值,但此时没有订阅3、在某个时点,有第一个观察者开始订阅4、我们期望观察者能接收之前主题推送的值(可能是全部值或者时其中一个)5、实际上啥都没发生,因为主题不能存储记忆

RxJs——错误处理(二)

从前文我们知道,错误处理有两种方式,一种是重新抛出一个错误,另一个是提供一个默认的回调值。今天我们介绍错误处理的另一些方式,先来看看重试。重试策略有一点需要记住,一旦流出现了错误,我们不能恢复它。但是没有什么能阻碍我们订阅其派生类对应的Observable,并且创建一个新的流。这种策略的工作原理是:1、我们将获取输入Observable并且订阅它,这将创建一个新的流。2、如果流没有出错,我们将在输

RxJs高阶运算——mergeMap

上一节我们介绍了第一个高阶运算concatMap,今天我们开始学习第二个高阶运算mergeMap。同样的道理,为了掌握mergeMap,我们先了解merge。mergeMap动态图我们知道concatMap是顺序执行,有的时候我们可能需要并行执行,此时我们就要用到merge.Observable Merge代码举例onst series1$ = interval(1000).pipe(map(va

RxJs高阶运算——switchMap

上一节我们学习了mergeMap的相关知识,我们知道了在并发执行的时候,我们可以使用mergeMap来达到效果。今天我们学习另一个高阶运算符switchMap。同样的道理,我们想要学习理解switchMap,我们首先得知道什么是switch?Observable Switchingswitch的概念更接近于merging而不是concatenation,因为我们不等待任何 Observable 终

RxJs高阶运算——exhaustMap

上一节我们介绍了switchMap的特点,只要一个新的Source Observable到来,我们就订阅新的Observable,那么可能会有另一种情况就是,我们订阅第一个Source Observable,只有当这个Observable都完成的时候,如果之前有新的Observable到来,我们都忽略,这种情况就是我们今天介绍的exhaustMap.为了学习exhaustMap,我们先得理解Exh

Observable不会触发onComplete

最近在使用Observable的时候,遇到一个特别有意思的问题,那就是将两个Observable顺序合并,然后订阅的时候,发现这两个Observable并不能顺序执行,而是只有一个Observable能够发出值。首先看看我的代码吧:let userProfile$ = this.userCenterService.getUserProfile(); let userAccount$ = this.

RxJs——takeUntil

今天我们继续学习takeUntil运算符。我们知道take运算符是主要是限制发送一定次数的值之后就结束发送;按照这样的思路,我们猜想,这个takeUntil也是发送一定的值之后应该结束,那么具体是什么呢?它将值从源 observable 传递给观察者,直到提供的称为通知 observable 发出其第一个值。它订阅源Observable,然后会监测源Observable;它还订阅了可观察的通知Ob

RxJs——takeWhile

上一节我们学习了takeUntil这个运算符,今天我们来看看另一个类似的运算符takeWhile.这个运算符的特点是:这个运算符接收一个谓词函数,函数的参数收到的就是流对象的值,如果谓词函数返回true,则直接将此值传递给观察者,否则,取消对源Observable'的订阅,然后完成。我们看看这个操作符的动态图:我们来分析一下:1、订阅源 observable2、当一个新值从源 observable