Comments (4)
单播多播
单播:
每个普通的 Observables 实例都只能被一个观察者订阅,当它被其他观察者订阅的时候会产生一个新的实例。也就是普通 Observables 被不同的观察者订阅的时候,会有多个实例,不管观察者是从何时开始订阅,每个实例都是从头开始把值发给对应的观察者;
多播:
订阅只会接收到实时的数据的功能;Subject
- BehaviorSubject : 订阅时会发出最近一次发出的值,实例化的时候需要传入一个初始值
- ReplaySubject : 会保存所有值,然后回放给新的订阅者,同时它提供了入参用于控制重放值的数量(默认重放所有)
- AsyncSubject : 只有当 Observable 执行完成时(执行complete()),它才会将执行的最后一个值发送给观察者,如果因异常而终止,AsyncSubject将不会释放任何数据,但是会向Observer传递一个异常通知;
from devnote.
冷 热 Observabel
冷:
只有被 observers 订阅的时候,才会开始产生值。是单播的,有多少个订阅就会生成多少个订阅实例,每个订阅都是从第一个产生的值开始接收值,所以每个订阅接收到的值都是一样的。
热:
不管有没有被订阅都会产生值。是多播的,多个订阅共享同一个实例,是从订阅开始接受到值,每个订阅接收到的值是不同的,取决于它们是从什么时候开始订阅。
from devnote.
待完善
mergeMap, switchMap, concatMap, exhaustMap
mergeMap :
会立即订阅所有内部 observables,先完成的 先发出值;
switchMap :
它具有取消效果。在每次发出时,会取消前一个内部 observable (你所提供函数的结果) 的订阅,然后订阅一个新的 observable
concatMap :
将值映射成内部 observable,并按顺序订阅和发出
concatMap 之前前一个内部 observable 完成后才会订阅下一个;
from devnote.
subject & BehaviorSubject 有什么区别
BehaviorSubject是subject的变体,具有类似的多播功能。
不同的是,BehaviorSubject需要初始值,并且会在订阅时发出当前值。
Subject只是多播,不保留状态,但是我们可以使用BehaviorSubject来知道最后一个发出的值。
from devnote.
Related Issues (20)
- 网页首屏加载 100张图片 怎么优化 HOT 1
- 前端如何让服务器主动向浏览器推送数据 HOT 2
- Vue 为什么组建模版只能有一个根元素
- Vue 为什么避免 v-if v-for 用在一起
- 算法 输入 1-10000 对称数字 HOT 1
- web 图片资源的加载与渲染时机
- Dom 事件传播机制
- 浏览器跨域问题
- Vue keep-alive
- Vue 官方脚手架 vue-cli 到底做了什么(vue-cli webpack 配置详解)
- require、import HOT 2
- Angular 依赖注入 HOT 2
- 前端 三大框架 对比 HOT 2
- Angular 变更检测 原理 HOT 1
- Vue 变更检测原理
- Angular 动态组件
- Vue 计算属性 computed & 监听器 watch HOT 1
- Angular 动态组件 HOT 1
- 数据结构与算法 blog总结 HOT 1
- IT 民工内卷不完全指南 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from devnote.