原创文章,转载请注明出处

理解

observable的每个订阅者之间,是独立的,完整的享受observable流动下来的数据的。

subject的订阅者之间,是共享一个留下来的数据的

举例

这里的clock$ 被订阅者被 observerA,observerB ,observerC 三个订阅者在不同的时间独自订阅。

对于三个订阅者,clock$ 都是从头重新完成的跑一遍。

    let a=''
const clock$ = Rx.Observable.interval(1000).take(3); const observerA = {
next(v) {
a+='--A执行了,'
console.log('A next: ' + v)
console.log(a)
}
}
const observerB = {
next(v) {
a+='--B执行了,'
console.log('B next: ' + v)
console.log(a)
}
} const observerC = {
next(v) {
a+='--C执行了,'
console.log('C next: ' + v)
console.log(a)
}
} clock$.subscribe(observerA) // a Observable execution setTimeout(() => {
clock$.subscribe(observerB) // another new Observable execution
}, 7000) setTimeout(() => {
clock$.subscribe(observerC) // another new Observable execution
}, 14000) /*
A next: 0
--A执行了,
A next: 1
--A执行了,--A执行了,
A next: 2
--A执行了,--A执行了,--A执行了,
B next: 0
--A执行了,--A执行了,--A执行了,--B执行了,
B next: 1
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,
B next: 2
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,
C next: 0
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,--C执行了,
C next: 1
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,--C执行了,--C执行了,
C next: 2
--A执行了,--A执行了,--A执行了,--B执行了,--B执行了,--B执行了,--C执行了,--C执行了,--C执行了,
*/

对于subject则不同

observerA,observerB ,observerC 三个订阅者在不同的时间订阅同一个subject。

他们三个在时间上是共享一个subject。

subject产生数据时,你这个订阅者如果没来得及订阅,那对不起,过了这个村就没这个店,你错过了。

const { Observable, Subject } = Rx

const clock$ = Observable.interval(1000).take(3);

const observerA = {
next(v) {
console.log('A next: ' + v)
}
}
const observerB = {
next(v) {
console.log('B next: ' + v)
}
}
const subject = new Subject()
subject.subscribe(observerA) clock$.subscribe(subject) setTimeout(() => {
subject.subscribe(observerB)
}, 2000) /*
* A next: 0
* A next: 1
* A next: 2
* B next: 2
*/

rxjs——subject和Observable的区别的更多相关文章

  1. [RxJS] Subject: an Observable and Observer hybrid

    This lesson teaches you how a Subject is simply a hybrid of Observable and Observer which can act as ...

  2. RxJS - Subject(转)

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

  3. import { Subject } from 'rxjs/Subject';

    shared-service.ts import { Observable } from 'rxjs/Observable'; import { Injectable } from '@angular ...

  4. [RxJS] Subject basic

    A Subject is a type that implements both Observer and Observable types. As an Observer, it can subsc ...

  5. [Javascript + rxjs] Introducing the Observable

    In this lesson we will get introduced to the Observable type. An Observable is a collection that arr ...

  6. [RxJS] Subject asObservable() method

    You can create your own state store, not using any state management libraray. You might have seen th ...

  7. 九、Rxjs请求对Observable进行封装

    1.引入 Http.Jsonp.Rxjs 三个模块 2.请求中添加一个 .map(res => res.json) 问题 1.Property 'map' does not exist on t ...

  8. rxjs简单的Observable用例

    import React from 'react'; import { Observable } from 'rxjs'; const FlowPage = () => { const onSu ...

  9. [rxjs] Creating An Observable with RxJS

    Create an observable var Observable = Rx.Observable; var source = Observable.create(function(observe ...

随机推荐

  1. c++/c在两个文件公用一个变量

    在一个cpp文件定义一个文件 在另一个文件extern+定义

  2. harbor关联k8s

    第一步 在harbor上创建用户,项目,将用户添加到对应项目中,并赋予用户项目管理者或者开发人员权限,使其对镜像仓库有读写权限. 本次部署创建用户liusw,密码Lsw123456,邮箱8730017 ...

  3. prometheus+grafana监控redis

    prometheus+grafana监控redis redis安装配置 https://www.cnblogs.com/autohome7390/p/6433956.html redis_export ...

  4. LOJ2557 CTSC2018组合数问题(提交答案)

    直接利用simulator退火应该可以得到大量分数. op=1:1,4,5,6,10 即构造序列{ai},最小化Σti,ai+rai,aj. 1:暴搜/退火. 4:观察到图大致成一条链(注意其中有两个 ...

  5. 洛谷 P1540 机器翻译

    链接:https://www.luogu.org/problemnew/show/p1540 题目: 题目背景 小晨的电脑上安装了一个机器翻译软件,他经常用这个软件来翻译英语文章. 题目描述 这个翻译 ...

  6. JS OOP -04 JS中的公有成员,私有成员和静态成员

    JS中的公有成员,私有成员和静态成员 a.实现类的公有成员 b.实现类的私有成员 c.实现类的静态成员 a.实现类的公有成员 之前定义的任何类型成员都属于公有成员的范畴,该类的任何实例都对外公开这些属 ...

  7. What's new in C# 7.0

    1.数字分隔符(Digit Separators ) 数字分隔符使代码更具可读性.在声明变量时,可以将_添加到单独的数字中.编译器只删除_.以下代码片段在C#7中看起来更具可读性: In C# 6 l ...

  8. mysql8中查询语句表别名不能使用 “of”

    今天在迁移一个项目的时候,发现有一个sql报错,但是语句跟迁移之前完全一样,所以想来应该是 mysql 版本差异导致的. 迁移之前版本:5.6.28(腾讯云) 迁移之后版本:8.0.16(阿里云) 新 ...

  9. python - pyxel 制作游戏

    之前看了一个项目,觉得还挺有意思的,是关于做一个像素风的游戏,现在,虚幻4,u3d,已经让游戏愈发的好看,好玩,曾经我们童年的像素风游戏,愈来愈少.所以,这里我们就回味下. Pyxel是一个pytho ...

  10. nlopt 二次优化

    /* * main.c * * Created on: Oct 9, 2018 * Author: lgh */ #include <stdio.h> #include <math. ...