Angular 5升级RxJS到5.5.3报错:EmptyError: no elements in sequence
Angular 5.0.5升级RxJS到5.5.3报错:ERROR Error: Uncaught (in promise): EmptyError: no elements in sequence EmptyError: no elements in seq
Angular 5.0.5升级RxJS到5.5.3报错:ERROR Error: Uncaught (in promise): EmptyError: no elements in sequence EmptyError: no elements in seq
Rxjs的expand()函数声明:public expand(project: function(value: T, index: number), concurrent: number, scheduler: Scheduler): Observable expand()会递归调用project函数,project函数把源值映射为一个Observable,每次递归
我们在使用RxJs中,知道RxJs的操作分为两类,一类是创建型,比如of(),fromEvent(),from()等,还有一类是操作型,比如map(),filter()。而这两类操作的基础和心是一个叫做Observable的对象,如果对Observable不甚理解,需要快速理解的可以查看这一篇今天我们来学习第一类,尝试着自己实现一次。of()这个操作接收数组参数,返回一个Observable,一旦
我们在使用Observable的时候,常常会涉及到一些操作,比如map(),filter()等,为了理解原理,今天我们在前几节(初步理解RxJs , RxJs——创建型操作 )的基础上,用两种不同的方式实现以上两个函数,希望能给大家提供借鉴。map代码实现废话不说,先来实现mapmap(fn) { return new MyObservable(observer => {
上一节我们实现了map和filter函数,我们将这些函数都挂载在MyObservable对象上,这里存在一个问题,类似map和filter这样的操作型函数很多,所以不可能将他们都挂载在MyObservable对象上,因此,这里出现了第二种实现。 这些操作函数能串联起来的本质就是能够形成嵌套调用,因此我想到了使用pipe,pipe的本质是接收一个 RxJS 操作符的运行结果作为参数,并返回
什么是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中重要组成部分,我们在响应式编程中几乎都要使用到;然而RxJs中的错误处理不像在其他库中的错误处理那么容易理解。小窍门就是关注Observable的约定,这样就容易理解RxJs中错误处理。 今天我们介绍一些常见的错误处理策略,涵盖一些常用场景,当然还是从Observable的基础知识——Observable的约定。Observable约定首先我们需要理解的是给定的流只能
上一节我们对subject有了初步理解,今天我们继续学习subjectReplaySubject介绍这个ReplaySubject之前,我们说下一种使用场景1、我们创建一个subject2、在应用的某个地方,我们向subject推送值,但此时没有订阅3、在某个时点,有第一个观察者开始订阅4、我们期望观察者能接收之前主题推送的值(可能是全部值或者时其中一个)5、实际上啥都没发生,因为主题不能存储记忆
从前文我们知道,错误处理有两种方式,一种是重新抛出一个错误,另一个是提供一个默认的回调值。今天我们介绍错误处理的另一种方式,先来看看重试。重试策略有一点需要记住,一旦流出现了错误,我们不能恢复它。但是没有什么能阻碍我们订阅其派生类对应的Observable,并且创建一个新的流。这种策略的工作原理是:1、我们将获取输入Observable并且订阅它,这将创建一个新的流。2、如果流没有出错,我们将在输
上一节我们介绍了第一个高阶运算concatMap,今天我们开始学习第二个高阶运算mergeMap。同样的道理,为了掌握mergeMap,我们先了解merge。mergeMap动态图我们知道concatMap是顺序执行,有的时候我们可能需要并行执行,此时我们就要用到merge.Observable Merge代码举例onst series1$ = interval(1000).pipe(map(va
上一节我们学习了mergeMap的相关知识,我们知道了在并发执行的时候,我们可以使用mergeMap来达到效果。今天我们学习另一个高阶运算符switchMap。同样的道理,我们想要学习理解switchMap,我们首先得知道什么是switch?Observable Switchingswitch的概念更接近于merging而不是concatenation,因为我们不等待任何 Observable 终
上一节我们介绍了switchMap的特点,只要一个新的Source Observable到来,我们就订阅新的Observable,那么可能会有另一种情况就是,我们订阅第一个Source Observable,只有当这个Observable都完成的时候,如果之前有新的Observable到来,我们都忽略,这种情况就是我们今天介绍的exhaustMap.为了学习exhaustMap,我们先得理解Exh
最近在使用Observable的时候,遇到一个特别有意思的问题,那就是将两个Observable顺序合并,然后订阅的时候,发现这两个Observable并不能顺序执行,而是只有一个Observable能够发出值。首先看看我的代码吧:let userProfile$ = this.userCenterService.getUserProfile(); let userAccount$ = this.
今天我们继续学习takeUntil运算符。我们知道take运算符是主要是限制发送一定次数的值之后就结束发送;按照这样的思路,我们猜想,这个takeUntil也是发送一定的值之后应该结束,那么具体是什么呢?它将值从源 observable 传递给观察者,直到提供的称为通知 observable 发出其第一个值。它订阅源Observable,然后会监测源Observable;它还订阅了可观察的通知Ob
上一节我们学习了takeUntil这个运算符,今天我们来看看另一个类似的运算符takeWhile.这个运算符的特点是:这个运算符接收一个谓词函数,函数的参数收到的就是流对象的值,如果谓词函数返回true,则直接将此值传递给观察者,否则,取消对源Observable'的订阅,然后完成。我们看看这个操作符的动态图:我们来分析一下:1、订阅源 observable2、当一个新值从源 observable
Rxjs基础我们知道在Rxjs中有几类基础组件,它们分别是:1、Observables2、Observers3、Operators4、Subjects5、Schedulers以上这些组件是Rxjs的核心构建块。我们需要理解它们如何协同工作以便提供强大的功能。一旦对它们有了更高层次的理解,使用起来将会得心应手。那么,让我们一一来看看它们。先来看一个例子://import { from } from