zoukankan      html  css  js  c++  java
  • 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>(1); //新建一个可观测可观测
      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

  • 相关阅读:
    .net Core 使用AutoMapper
    文件批量生成IO流读写
    .net Core数据的幕等性
    .net core 拦截器的使用
    墙上你APP设计与实现
    H5 App实现热更新,不需要重新安装app
    支付宝支付接口的使用详细说明
    .net 数据源DataSet 转换成模型
    .net ajax跨域请求问题
    【系统之音】SystemUI篇(二)SysytemUI功能一览--草稿
  • 原文地址:https://www.cnblogs.com/ymh2013/p/9985593.html
Copyright © 2011-2022 走看看