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

 

  

   

          

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值