zoukankan      html  css  js  c++  java
  • RxJS--Subject

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

    每一个Subject都是一个Observable(可观察对象),可以订阅(subscribe)它。

    要给subject提供新值,只要调用next(theValue), 它会将值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也可以作为Observer(观察者),有如下方法: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);
    
      }
  • 相关阅读:
    freemarker报错之十一
    freemarker定义一个连续的序列
    freemarker报错之十
    freemarker之数组
    解决linux环境下nohup: redirecting stderr to stdout问题
    如何查看Linux操作系统版本?
    log file sync
    freemarker中的round、floor和ceiling数字的舍入处理
    freemarker中的split字符串分割
    freemarker中的left_pad和right_pad
  • 原文地址:https://www.cnblogs.com/xuepei/p/9964182.html
Copyright © 2011-2022 走看看