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);
    
      }
  • 相关阅读:
    .net core 下编码问题
    spring一些简单小注意知识点
    使用ORM插入数据报错 Duplicate entry '0' for key 'PRIMARY'
    python:零散记录
    python:端口扫描邮件推送
    redis:哨兵集群配置
    redis:安装配置主从
    iptables:ipset批量管理ip
    Django:调用css、image、js
    Python:字体颜色
  • 原文地址:https://www.cnblogs.com/xuepei/p/9964182.html
Copyright © 2011-2022 走看看