[RxJS] Subject basic

A Subject is a type that implements both Observer and Observable types. As an Observer, it can subscribe to Observables, and as an Observable it can produce values and have Observersw subscribe it.

First time I read

implements both Observer and Observable types

I was quite confused.

As a Observable:

var subject = new Rx.Subject();
var subscription = subject.subscribe(
   function onNext(x) { console.log(‘onNext: ‘ + x); },
   function onError(e) { console.log(‘onError: ‘ + e.message); },
   function onCompleted() { console.log(‘onCompleted‘); }
);
subject.onNext(‘Our message #1‘);
subject.onNext(‘Our message #2‘);

/*
"onNext: Our message #1"
"onNext: Our message #2"
*/

Every time we call onNext() message to yield the value.

As a Observer, so we use ‘source‘ to sebscribe ‘subject‘, then subscribe ‘subject‘ again to get the side effect

var subject = new Rx.Subject();
var source = Rx.Observable.interval(300)
   .map(function(v) { return ‘Interval message #‘ + v; })
   .take(5);
source.subscribe(subject);
var subscription = subject.subscribe(
   function onNext(x) { console.log(‘onNext: ‘ + x); },
   function onError(e) { console.log(‘onError: ‘ + e.message); },
   function onCompleted() { console.log(‘onCompleted‘); }
);
setTimeout(function() {
   subject.onCompleted();
}, 1000);

/*
"onNext: Interval message #0"
"onNext: Interval message #1"
"onNext: Interval message #2"
"onCompleted"
*/
时间: 2024-10-06 03:44:59

[RxJS] Subject basic的相关文章

关于rxjs subject订阅分发实现Angular的全局数据管理与同步更新

自定义实现angular中数据的状态管理,如有不妥请指正 一.先介绍一下rxjs中subject: Import {subject}from’rxjs’ Subject 数据的订阅与分发,结合报刊的发布与订阅进行功能的模拟,subject即是observeable对象也是observer对象,subject对于后期没有数据更新时所添加的订阅者是不怎么友好的,因为不跟新数据时订阅者就不在收到返回的数值     const interval$ = interval(1000).pipe(take(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 a bridge between the source Observable and multiple observers, effectively making it possible for multiple observers to share the same Observable exe

rxjs——subject和Observable的区别

一个 Observable 是可以被多个 observer 订阅的,只是每个订阅都是一个新的独立的 Observable execution : const { Observable } = Rx const clock$ = Observable.interval(1000).take(3); const observerA = { next(v) { console.log('A next: ' + v) } } const observerB = { next(v) { console.l

[RxJS] Reusable multicasting with Subject factories

The way we use publish() (or multicast with an RxJS Subject) makes the shared Observable not reusable if the shared execution happens to complete or emit an error. In this lesson we will see how to use a simple Subject factory function in order to cr

Angular2中的RxJS

RxJS库 RxJS(Reactive Extensions)是个Angular提供的第三方库,实现异步观察模式(asynchronous observable pattern). 启用RxJS操作 RxJS非常大,通常只要我们所需要的特性就好了.Angular在rxjs/Observable模块中提供了简版的Observable,但是它缺乏我们所需要的所有的操作,包括上面提到的map方法. 我们在应用启动时引入所有RxJS操作: import 'rxjs/Rx'; 首先我们观'rxjs/Obs

[Angular 2] Managing State in RxJS with StartWith and Scan

The scan operator in RxJS is the main key to managing values and states in your stream. Scan behaves just as a reduce function would, but scan is able to collect values from streams over time. This lesson covers using startWith to set the initial acc

angular2 学习笔记 ( rxjs 流 )

RxJS 博大精深,看了好几篇文章都没有明白. 范围牵扯到了函数响应式开发去了... 我对函数式一知半解, 响应式更是第一次听到... 唉...不过日子还是得过...混着过先呗 我目前所理解的很浅, 大致上是这样的概念. 1.某些场景下它比promise好用, 它善于过滤掉不关心的东西. 2.它是观察者模式 + 迭代器模式组成的 3.跟时间,事件, 变量有密切关系 4.世界上有一种东西叫 "流" stream, 一个流能表示了一段时间里,一样东西发生的变化. 比如有一个值, 它在某段时

使用 RxJS 实现一个简易的仿 Elm 架构应用

使用 RxJS 实现一个简易的仿 Elm 架构应用 标签(空格分隔): 前端 什么是 Elm 架构 Elm 架构是一种使用 Elm 语言编写 Web 前端应用的简单架构,在代码模块化.代码重用以及测试方面都有较好的优势.使用 Elm 架构,可以非常轻松的构建复杂的 Web 应用,无论是面对重构还是添加新功能,它都能使项目保持良好的健康状态. Elm 架构的应用通常由三部分组成--模型.更新.视图.这三者之间使用 Message 来相互通信. 模型 模型通常是一个简单的 POJO 对象,包含了需要

angular踩坑之路:初探webpack

之前费了一番力气安装好了angular开发环境,后面的几天都是在angular中文官网上看文档,照着英雄教程一步一步操作,熟悉了angular的一些基本特性,这部分没有遇到什么大问题,还比较顺利.这两天在看官方文档中的Webpack简介,想跟着文档做一遍,了解一下如何用Webpack打包angular项目,结果遇到了一些问题,因为是初学angular和Webpack的小白,这些问题一时难以解决,花费了不少时间,想在这里记录一下. 首先跟着文档将相关的文件都添加到项目中,目录是这样子的: 根据文档