美文网首页
第2章 RxJS入门

第2章 RxJS入门

作者: 我是小布丁 | 来源:发表于2021-07-11 23:16 被阅读0次

注: 学习程墨老师《深入浅出RxJS》的笔记 。

1、Observable和Observer

Observable就是可以被观察,Observer 就是观察者,连接二者的桥梁就是Observable对象的subscribe函数。
RxJS中的数据流就是Observable对象,Observable实现了下面两种设计模式:

  • 观察者模式(Observer Pattern)
  • 迭代器模式(Iterator Pattern)
Observable = Publisher + Iterator

Observable和Observer 关系中,Observable主动方,Observer被动方

观察者模式

发布者负责产生事件,它会通知所有注册的观察者,而不关心这些观察者如何处理这些事件。相对的,观察者可以被注册上某个发布者,只管接收到事件后就处理,而不关心这些数据是如何产生的。

在RxJS的世界中,Observable对象就是一个发布者,通过Observable对象的subscribe函数,可以把这个发布者和某个Observer观察者连接起来

image.png

迭代器模式

迭代器是指能够变量一个数据集合的对象。迭代器作用就是提供一个通用的接口,让使用者完全不用关心这个数据集合的具体实现方式。
迭代器另一种容易理解名字叫游标(cursor),就像是一个移动的指针一样,从集合中一个元素移到另一个元素,完成对整个集合的遍历。
在RxJS中,作为迭代器的使用者,并不需要主动去从Observable中“拉”数据,而是只要调用
Observable上的subscribe函数之后,自然就能够收到消息的推送。

创建Observable

const source$ = new Observable(function(observer) {
  let number = 1;
  let timer = setInterval(()=> {
    observer.next(number++);
    if(number > 3){
      clearInterval(timer);
      observer.complete();
    }
  }, 1000);
});

const subscription = source$.subscribe(
  next => console.log(next),
  error => console.log(error),
  complete => console.log(complete),
);

subscription.unsubscribe(); // 退订

假如我们中断这个程序,让它一直运行下去,这个程序也不会消耗更多的内存,因为Observable对象每次只吐一个数据,然后这个数据就被Observer消化处理了,不会存在数据的堆积。

error和complete都是终结态,终结后不会再调用next 。unsubscribe之后断开source$对象和Observer的连接,之后再调用next,Observer都不会再收到消息

image.png

2、Hot Observable 和Cold Observable

Observable对象是一个数据流,可以在一个时间范围内吐出一系列数据。

Hot Observable,错过已经吐出的数据,只需要接受从订阅那一刻开始Observable 产生的数据就行。
Cold Observable,需要获取Observable 之前的产生的数据

3、操作符简介

在RxJS中,组成数据管道的元素就是操作符,每一个操作符都创建一个新的Observable对象,不会对上游的Observable对象做任何修改,这完全符合我们再第一章提到的函数式编程的“数据不可变”要求。


image.png

4、弹珠图

操作符的弹珠图:https://rxmarbles.com/

image.png
image.png

有|表示完结,x表示error。不可能既有符合|又有x符合

相关文章

  • Rxjs系列教程目录

    RxJS-中文文档RxJS-中文指南 rxjs学习入门心得(一)Observable可观察对象rxjs学习入门心得...

  • Rxjs入门

    本文转自我的博客阅读原文。 概况 Rxjs是响应式编程思想在JS中的一种实现。那么Rxjs到底是个什么东西呢?装逼...

  • RxJS 入门

    RxJS 是什么 Reactive Programming(响应式编程) 是使用异步数据流进行编程的技术,简称 R...

  • 第2章 RxJS入门

    注: 学习程墨老师《深入浅出RxJS》的笔记 。 1、Observable和Observer Observable...

  • RxJS 快速入门

    这是一篇给新手的 RxJS 快速入门,它可能不精确、不全面,但力求对新手友好。 异步与“回调地狱” 我们都知道 J...

  • RxJS简易入门

    什么是RxJS?RxJS解决什么样的问题?通过怎么样的手段?带着这些问题,我们便来学习一下RxJS,本文旨在帮助大...

  • 01RxJS-响应式编程类库

    rxjs-响应式编程类库)RxJS官网[https://rxjs.dev/] RxJS(Reactive Exte...

  • RxJS

    RxJS官网[https://rxjs.dev/] 1 概述 1.1 什么是 RxJS ? RxJS 是一个用...

  • Rxjs【take, first, takeUntil, con

    Rxjs学习之路 1、小贴士 这篇文章是我的Angular Rxjs Series中的第篇三文章,在继续阅读本文之...

  • Rxjs【skip, takeLast, last, conca

    Rxjs学习之路 1、小贴士 这篇文章是我的Angular Rxjs Series中的第篇四文章,在继续阅读本文之...

网友评论

      本文标题:第2章 RxJS入门

      本文链接:https://www.haomeiwen.com/subject/ufnkpltx.html