RxJS核心概念之Subjet在angular2+上的应用
Subject,在RxJS中是一类特殊的Observable(可观察对象),它可像多个Observer(观察者)推送值。
每一个Subject也可以作为Observer(观察者) Subject同样也是一个由next(v),error(e),和complete()这些方法组成的对象。调用next(theValue)方法后,Subject会向所有已经在其上注册的Observer多路推送theValue。
1、创建一个subjectService,实现可观察以及推送推功能
import {Injectable} from "@angular/core";
import { ReplaySubject } from "rxjs/ReplaySubject";
import { Observable } from "rxjs/Observable";
import 'rxjs/add/observable/of';
@Injectable() export class SubjectService { private _subject: ReplaySubject<string> = new ReplaySubject<string>(); //新建一个可观测可观测
setCurrentValue(value: string): Observable<boolean> { //设置值
this._subject.next(value);
return Observable.of(true);
} currentValue(): Observable<string> {//推送值
return this._subject.asObservable();
} }
2、在组建中设置需要推送的值
constructor(private _subjectService: SubjectService) { }
setValue() { this._subjectService.setCurrentValue('value').subscribe((result: boolean) => { if (!result) { console.log('可观察者设定失败');
return;
} console.log('可观察者设定成功');
});
}
3、订阅、可订阅多个对象
subjectValue = '';
constructor(private _subjectService: SubjectService) { } ngOnInit() { this._subjectService.currentValue().subscribe((data: string) => { if (!data) { console.log('获取失败');
return;
} this.subjectValue = data;
});
}
参考网址
https://segmentfault.com/a/1190000005069851
RxJS核心概念之Subjet在angular2+上的应用的更多相关文章
- Go modules基础精进,六大核心概念全解析(上)
点击一键订阅<云荐大咖>专栏,获取官方推荐精品内容,学技术不迷路! Go 语言做开发时,路径是如何定义的?Go Mudules又为此带来了哪些改变?本文将会全面介绍Go modules六大 ...
- 领域驱动设计(DDD)部分核心概念的个人理解
领域驱动设计(DDD)是一种基于模型驱动的软件设计方式.它以领域为核心,分析领域中的问题,通过建立一个领域模型来有效的解决领域中的核心的复杂问题.Eric Ivans为领域驱动设计提出了大量的最佳实践 ...
- Javascript本质第一篇:核心概念
很多人在使用Javascript之前都至少使用过C++.C#或Java,面向对象的编程思想已经根深蒂固,恰好Javascript在语法上借鉴了Java,虽然方便了Javascript的入门,但要深入理 ...
- [程序设计语言]-[核心概念]-02:名字、作用域和约束(Bindings)
本系列导航 本系列其他文章目录请戳这里. 1.名字.约束时间(Binding Time) 在本篇博文开始前先介绍两个约定:第一个是“对象”,除非在介绍面向对象语言时,本系列中出现的对象均是指任何可以有 ...
- spring技术核心概念纪要
一.背景 springframework 从最初的2.5版本发展至今,期间已经发生了非常多的修正及优化.许多新特性及模块的出现,使得整个框架体系显得越趋庞大,同时也带来了学习及理解上的困难. 本文阐述 ...
- ElasticSearch学习笔记-01 简介、安装、配置与核心概念
一.简介 ElasticSearch是一个基于Lucene构建的开源,分布式,RESTful搜索引擎.设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便.支持通过HTTP使用JSON进 ...
- Maven的几个核心概念
POM (Project Object Model) 一个项目所有的配置都放置在 POM 文件中:定义项目的类型.名字,管理依赖关系,定制插件的行为等等.比如说,你可以配置 compiler 插件让它 ...
- 刀哥多线程GCD核心概念gcd
GCD GCD 核心概念 将任务添加到队列,并且指定执行任务的函数 任务使用 block 封装 任务的 block 没有参数也没有返回值 执行任务的函数 异步 dispatch_async 不用等待当 ...
- cocos2d-x一些核心概念截杀
Cocos2d-x中有很多概念,这些概念很多来源于动画.动漫和电影等行业,例如:导演.场景和层等概念,当然也有些有传统的游戏的概念.Cocos2d-x中核心概念:导演, 场景,层,节点,精灵,菜单动作 ...
随机推荐
- CSAPP之阅读笔记-计算机系统漫游(1)
最近在看CSAPP(深入理解计算机系统第二版),其实最新版是第三版.但是,我看了一下价格100多大洋,于是去老夫子旧书网上买了本第二版的,花了30多块钱.哈哈. 网上看了一些关于此书的书评,都说是本好 ...
- 跟随我在oracle学习php(12)
DOM 文档对象模型 body:(什么时候)找到标签 操作标签找到标签:(都会返回一个js对象)document.getElementById() 通过iddocument.getElementsBy ...
- JS中的作用域(一)-详谈
本篇文章在于详细解读JavaScript的作用域,从底层原理来解释一些常见的问题,例如变量提升.隐式创建变量等问题,在和大家一起交流进步的同时,也算对自己知识掌握的记录,方便以后复习 首先,直接捡干的 ...
- 第一章 Python基本语法
寒假不能荒废,终于静下心来认真地开始学习Python,在这里与大家分享一下所学知识,希望能对像我这样的小白有所帮助,如有错误之处,谢大佬不吝赐教!! 编程语言包括机器语言.汇编语言.高级语言.超 ...
- 005dayPython学习:编写并执行Pythong代码和流程梳理
一.创建 python 文件 PS:文件路径和文件名尽量不要包含中文! 二.编写python代码 1.头部的特殊两行 #!/usr/bin/env python # -*- coding:utf-8 ...
- java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp
java.sql.SQLException: Value '0000-00-00' can not be represented as java.sql.Timestamp 错误是因为时间类型出现了0 ...
- C++笔记之关键字explicit
在C++中,explicit关键字用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换. explicit使用注意事项: explicit 关键字只能用 ...
- 微信小程序 拖动图片一边进行截取
简单实现一个画布截取图片的功能 原始图片超出指定尺寸,会进行隐藏,利用短边的宽度截取长边的宽度,拖动生成指定内容的图片 横图 竖图 var box_width = 600; //截取框尺寸 var b ...
- 安装linux虚拟机配置静态ip(桥接模式)
1.centOs7.VMware Workstation14 2.常规新建虚拟机操作后,来到选择连接模式: 这里选择桥接模式,复制物理网络连接状态(就是把实际的主机网卡信息拷贝一份,让虚拟机也有一份和 ...
- React Navigation基本用法
/** * Created by apple on 2018/9/23. */ import React, { Component } from 'react'; import {AppRegistr ...