zoukankan      html  css  js  c++  java
  • Rxjs的多播muticast

    1. 多播和广播的区别

    多播和广播类似一个是广播,不确定谁能够收到, 一个是微信群, 指定的可以收到

    EventEmitter就是广播

    一个可观察对象是可以U盾偶次被订阅的, 但是是冷订阅每次都从头消费

    const head$ = Observable.interval(1000).take(3)

    head$.subscribe(res=>console.log(res)); //0, 1,2

    setTimeout(()=>console.log(res), 2000); // 0,1,2

    2. cold observable vs hot observable

    hot observable是直播、热播, 过去的消息就过去了, 例如websocket, eventEmitter,浏览器事件

    3. Subject

    Subject是一个可以把cold observable转化成后hot observable的。 其实担当两份工作, 就是接收真实上游cold observable的一个观察者(observer), 又是发往订阅对象的被观察对象。

    Observable.prototype.makeHot = function(){

      const cold$ = this;

      const subject = new Subject();

      cold$.subscribe(subject);

      return subject;

    }

    const hottick$ = Observable.interval(1000).take(3).makeHot();

    hottick$.subscribe(res=>{})

    // 但是如果对subject执行oncomplete操作, 会是的上游的数据过不来, 就是说水流不仅仅是由上游控制的。可以改进为:

    Observable.prototype.makeHot = function(){

      const cold$ = this;

      const subject = new Subject();

      cold$.subscribe(subject);

      return Obsevable.create(observer => subject.subscribe(observer));

    4. 有直接支持多播的操作符

    const hot$ = cold$.multicast(new Subject);

    }

  • 相关阅读:
    组件中的data为什么不是一个对象而是一个函数?
    v-if v-show 的区别 以及使用的场景
    前后端数据交互的方式有哪些?
    服务端渲染客户端渲染的区别
    按下www.baidu.com发生什么
    php-语言参考-类型3.2-未完待续
    php-安装与配置-未完待续2
    PHP-入门指引1
    php扩展开发-INI配置
    php扩展开发-全局变量
  • 原文地址:https://www.cnblogs.com/connie313/p/13871677.html
Copyright © 2011-2022 走看看