首页 > Web开发 > 详细

Rxjs的多播muticast

时间:2020-10-25 11:01:03      阅读:33      评论:0      收藏:0      [点我收藏+]

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);

}

Rxjs的多播muticast

原文:https://www.cnblogs.com/connie313/p/13871677.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!