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

  • 相关阅读:
    测试:安装测试用例
    测试:界面测试
    软件项目管理:什么是baseline
    测试:fiddler使用
    android adb常用指令
    sqlite语句主页
    几条常见的数据库分页 SQL 语句
    linux下tomcat无法访问问题(换一种说法:无法访问8080端口)
    eclipse中svn的各种状态图标详解
    Tomcat项目部署方式
  • 原文地址:https://www.cnblogs.com/ymh2013/p/9985593.html
Copyright © 2011-2022 走看看