Subject

Subject是可观察的一种特殊类型,它允许将值多播到许多观察者

import {Subject} from 'rxjs';

const l = console.log;
let x$ = new Subject<number>();
x$.subscribe(v => l(`a => ${v}`)); // 1, 2, 3
x$.next(1);
x$.next(2); setTimeout(() => {
x$.subscribe(v => l(`b => ${v}`)); // 3
x$.next(3);
}, 2000);

BehaviorSubject

Subject的变体,需要初始值,并且在订阅时会发出其当前值。

import {BehaviorSubject} from 'rxjs';

const l = console.log;
let x$ = new BehaviorSubject<number>(0);
x$.subscribe(v => l(`a => ${v}`)); // 0, 1, 2, 3
x$.next(1);
x$.next(2); setTimeout(() => {
// 订阅时发出当前值: 2
x$.subscribe(v => l(`b => ${v}`)); // 2, 3
x$.next(3);
}, 2000);

AsyncSubject

Subject的变体,仅在完成时才发出值。完成后,它将向所有观察者发出其最新值。

import {AsyncSubject} from 'rxjs';

const l = console.log;
let x$ = new AsyncSubject<number>();
x$.subscribe(l); // 2
x$.next(1);
x$.next(2);
x$.complete();

ReplaySubject

可“重放”或向新订阅者发出旧值。 它缓冲一定数量的值,除了向现有订户发送新值外,还将立即将这些值发送给任何新订户。

import {ReplaySubject} from 'rxjs';

const l = console.log;
let x$ = new ReplaySubject<number>();
x$.subscribe(v => l(`a => ${v}`)); // 1, 2, 3
x$.next(1);
x$.next(2); setTimeout(() => {
// 2s后,向新的订阅发出旧的值:1,2
x$.subscribe(v => l(`b => ${v}`)); // 1, 2, 3
x$.next(3);
}, 2000);

rxjs 常用的subject的更多相关文章

  1. rxjs 常用的管道操作符

    操作符文档 api 列表 do -> tap catch -> catchError switch -> switchAll finally -> finalize map s ...

  2. RxJS——主题(Subject)

    主题(Subjects) 什么是主题?RxJS 主题就是一个特性类型的 Observable 对象,它允许值多路广播给观察者(Observers).当一个简单的 Observable 是单播的(每个订 ...

  3. Rxjs常用operators

    本文使用的是angular6内置的rxjs,版本号为6.3.3 concat 通过顺序地发出多个 Observables 的值将它们连接起来,一个接一个的. 参数: 名称 类型 属性 描述 other ...

  4. rxjs 常用的静态操作符

    操作符文档 API create const { Observable } = require('rxjs'); // 创建 Observables var observable = Observab ...

  5. RxJS - Subject(转)

    Observer Pattern 观察者模式定义 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态 ...

  6. RxJS速成 (下)

    上一部分: http://www.cnblogs.com/cgzl/p/8641738.html Subject Subject比较特殊, 它即是Observable又是Observer. 作为Obs ...

  7. rxjs简单入门

    rxjs全名Reactive Extensions for JavaScript,Javascript的响应式扩展, 响应式的思路是把随时间不断变化的数据.状态.事件等等转成可被观察的序列(Obser ...

  8. RxJS v6 学习指南

    为什么要使用 RxJS RxJS 是一套处理异步编程的 API,那么我将从异步讲起. 前端编程中的异步有:事件(event).AJAX.动画(animation).定时器(timer). 异步常见的问 ...

  9. Rxjs 操作符

    1. javascript解决异步编程方案 解决javascript异步编程方案有两种,一种是promise对象形式,还有一种是是Rxjs库形式,Rxjs相对于Promise来说,有好多Promise ...

随机推荐

  1. kubernetes 身份与权限认证 (ServiceAccount && RBAC)

    Kubernetes中提供了良好的多租户认证管理机制,如RBAC.ServiceAccount还有各种Policy等.   ServiceAccount Service Account为Pod中的进程 ...

  2. SpringMVC传递JSON数据

    文章目录 一.前后端传递和接收JSON数据 1:是要Ajax默认格式来传递数据(*) 2:使用application/json格式来传递数据 二.spring-web.xml中需要如下配置 一.前后端 ...

  3. Spring boot freemarker 配置

    spring: datasource: type: com.alibaba.druid.pool.DruidDataSource driverClassName: com.mysql.jdbc.Dri ...

  4. 当 .NET 5 遇上OpenTelemetry,会碰撞出怎样的火花?

    OpenTelemetry 介绍 我在之前的几篇文章都介绍了 OpenTelemetry, 你可以在这里找到 OpenTelemetry - 云原生下可观测性的新标准 深入研究 .NET 5 的开放式 ...

  5. 腾讯云TcaplusDB获新加坡MTCS最高等级安全认证

    近日,经过国际权威认证机构DNV GL的全面评估审核,TcaplusDB获得了新加坡多层云安全(以下简称"MTCS")T3级最高等级认证,这标志着TcaplusDB全面满足了新加坡 ...

  6. 【STM32】串口

    一. 串口中断使能问题 错误: 串口只能接收一次数据,从串口助手发第二个数据时接收不到. 分析: 在UART_Receive_IT(huart)函数里,回调函数的上面有如下代码: 这几行代码的作用是关 ...

  7. jdk 安装过程配置环境变量 error 的解决过程

    jdk 安装过程配置环境变量 error 的解决过程 问题背景: 我在安装 jdk 过程中在JAVA_HOME和path中添加路径后, cmd 中输入java 和javac均出现错误,因为之前在 D ...

  8. CF - 392 C. Yet Another Number Sequence (矩阵快速幂)

    CF - 392 C. Yet Another Number Sequence 题目传送门 这个题看了十几分钟直接看题解了,然后恍然大悟,发现纸笔难于描述于是乎用Tex把初始矩阵以及转移矩阵都敲了出来 ...

  9. 2018 ccpc吉林 The Tower

    传送门:HDU - 6559 题意 在一个三维空间,给定一个点和他的三维速度,给定一个圆锥,问这个点最早什么时候能撞上圆锥. 题解 本来一直想着怎么求圆锥的方程,然后....队友:这不是二分吗!然后问 ...

  10. Redis性能指标监控

    监控指标 •性能指标:Performance•内存指标: Memory•基本活动指标:Basic activity•持久性指标: Persistence•错误指标:Error 性能指标:Perform ...