RxJS--Subject

Subject是Observable的子类,subject是多播的,允许将值多播给多个观察者,普通observable是单播。

要给subject提供新值,只要调用next(theValue), 它会将值多播给已注册监听该subject的观察者们。

import {Component, OnInit} from '@angular/core'
import {Subject, Subscription} from 'rxjs'


ngOnInit(){
    const subject: Subject<string> = new Subject<string>();

    const subscriptionA: Subscription = subject.subscribe(
        (val: string) => {console.log(`observerA: $(val)`)};
    );

    const subscriptionB: Subscription = subject.subscribe(
        (val: string) => {console.log(`observerB: $(val)`)};
    );

    subject.next('博客');
    subject.next('圆圆');
    subscriptionA.unsubscribe();    //取消订阅
    subscriptionB.unsubscribe();    //取消订阅
    subject.next('取消订阅后');
    subject.complete();
}

每个Subject都是观察者,有如下方法:next(v), error(e). complete(); 可以把Subject作为参数传递给任何Observable的subscribe方法

import { Subject,  Subscription, Observable} from 'rxjs';


ngOnInit() {
    const subject: Subject<string> = new Subject<string>();
    const subscriptionA: Subscription = subject.subscribe(
      (val: string) => {
        console.log(`observerA: ${val}`);
      }
    );
    const subscriptionB: Subscription = subject.subscribe(
      (val: string) => {
        console.log(`observerB: ${val}`);
      }
    );

    const observable: Observable<string> = from(['Raph', 'Don']);
    observable.subscribe(subject);

  }

猜你喜欢

转载自www.cnblogs.com/xuepei/p/9964182.html