rxjs 常用的subject
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的更多相关文章
- rxjs 常用的管道操作符
操作符文档 api 列表 do -> tap catch -> catchError switch -> switchAll finally -> finalize map s ...
- RxJS——主题(Subject)
主题(Subjects) 什么是主题?RxJS 主题就是一个特性类型的 Observable 对象,它允许值多路广播给观察者(Observers).当一个简单的 Observable 是单播的(每个订 ...
- Rxjs常用operators
本文使用的是angular6内置的rxjs,版本号为6.3.3 concat 通过顺序地发出多个 Observables 的值将它们连接起来,一个接一个的. 参数: 名称 类型 属性 描述 other ...
- rxjs 常用的静态操作符
操作符文档 API create const { Observable } = require('rxjs'); // 创建 Observables var observable = Observab ...
- RxJS - Subject(转)
Observer Pattern 观察者模式定义 观察者模式又叫发布订阅模式(Publish/Subscribe),它定义了一种一对多的关系,让多个观察者对象同时监听某一个主题对象,这个主题对象的状态 ...
- RxJS速成 (下)
上一部分: http://www.cnblogs.com/cgzl/p/8641738.html Subject Subject比较特殊, 它即是Observable又是Observer. 作为Obs ...
- rxjs简单入门
rxjs全名Reactive Extensions for JavaScript,Javascript的响应式扩展, 响应式的思路是把随时间不断变化的数据.状态.事件等等转成可被观察的序列(Obser ...
- RxJS v6 学习指南
为什么要使用 RxJS RxJS 是一套处理异步编程的 API,那么我将从异步讲起. 前端编程中的异步有:事件(event).AJAX.动画(animation).定时器(timer). 异步常见的问 ...
- Rxjs 操作符
1. javascript解决异步编程方案 解决javascript异步编程方案有两种,一种是promise对象形式,还有一种是是Rxjs库形式,Rxjs相对于Promise来说,有好多Promise ...
随机推荐
- git本地检出远程分支
场景:本地分支被误物理删除,想要重新将自己的分支代码从远程拉取下来.(此时取的是最后一次git push上去的分支代码) 1.与远程仓库重新建立关系 1 git clone git@gitlab.名称 ...
- Spring 动态代理时是如何解决循环依赖的?为什么要使用三级缓存?
前言 在研究 『 Spring 是如何解决循环依赖的 』 的时候,了解到 Spring 是借助三级缓存来解决循环依赖的. 同样在上一节留下了疑问: 循环依赖为什么要使用三级缓存?而不是使用二级缓存? ...
- hadoop知识点总结(三)YARN设计理念及基本架构
YARN设计理念与基本架构 1,MRv1的局限性:扩展性差,可靠性差,资源利用率低,无法支持多种计算框架 2,YARN基本设计思想 1)基本框架对比 Hadoop1.0中,JobTracker由资源管 ...
- js创建map
function Map() { var struct = function(key, value) { this.key = key; this.value = value; } var put = ...
- Pythonchallenge1过关攻略
第一关上来是一个电视,上面写着2^38,这就非常关键了,这时候我们已经有了大致思路,再看一眼电视机下面的话确认一下,"Hint: try to change the URL address. ...
- 关于base64编码Encode和Decode编码的几种方式--Java
Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应用上,Base64除了能将Binary资料可视化之外 ...
- JDK-7新特性,更优雅的关闭流-java try-with-resource语句使用
前言 公司最近代码质量整改,需要对大方法进行调整,降低到50行以下,对方法的深度进行降低,然后有些文件涉及到流操作,很多try/catch/finally语句,导致行数超出规范值,使用这个语法可以很好 ...
- GPLT L2-006 树的遍历(二叉树)
题意: 给定一棵二叉树的后序遍历和中序遍历,请你输出其层序遍历的序列.这里假设键值都是互不相等的正整数. 思路: 后序遍历序列 = 左子树遍历序列 + 右子树遍历序列 + 根节点. 中序遍历序列 = ...
- Git管理远程仓库
一:使用远程仓库的目的 作用:备份,实现代码共享集中化管理: 二:将git本地仓库同步到远程仓库流程图 三:Git克隆操作 目的: 将远程仓库(github远程仓库项目代码)克隆到本地 如何克隆 1. ...
- 3.使用nginx-ingress
作者 微信:tangy8080 电子邮箱:914661180@qq.com 更新时间:2019-06-25 13:54:15 星期二 欢迎您订阅和分享我的订阅号,订阅号内会不定期分享一些我自己学习过程 ...