博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[RxJS] Multicasting shortcuts: publish() and variants
阅读量:7049 次
发布时间:2019-06-28

本文共 2109 字,大约阅读时间需要 7 分钟。

Because using multicast with a new Subject is such a common pattern, there is a shortcut in RxJS for this: the publish() operator. This lesson introduces publish() and its variants publishReplay(), publishBehavior(), publishLast(), share(), and shows how they simplify the creation of multicasted Observables.

 

var shared = Rx.Observable.interval(1000)  .do(x => console.log('source ' + x))  .multicast(new Rx.Subject())   .refCount();

This partten multicast(new Rx.Subject()) to create sharable subject is so common, there is shortcut to doing this: 'publish()':

var shared = Rx.Observable.interval(1000)  .do(x => console.log('source ' + x))  .publish()  .refCount();

 

Also for BehaviourSubject(), AsyncSubject(), ReplaySubject() they all have:

// publish = multicast + Subject// publishReplay = multicast + ReplaySubject// publishBehavior = multicast + BehaviorSubject// publishLast = multicast + AsyncSubject

 

In fact, publish.refCount() is also common used, so there is another alias for this =.=!!

var shared = Rx.Observable.interval(1000)  .do(x => console.log('source ' + x))  .share(); // share() == publish().refCount() == multiCast(new Rx.Subject()).refCount()

 

var shared = Rx.Observable.interval(1000)  .do(x => console.log('source ' + x))  .share();// share = publish().refCount()// publish = multicast + Subject// publishReplay = multicast + ReplaySubject// publishBehavior = multicast + BehaviorSubject// publishLast = multicast + AsyncSubjectvar observerA = {  next: function (x) { console.log('A next ' + x); },  error: function (err) { console.log('A error ' + err); },  complete: function () { console.log('A done'); },};var subA = shared.subscribe(observerA);var observerB = {  next: function (x) { console.log('B next ' + x); },  error: function (err) { console.log('B error ' + err); },  complete: function () { console.log('B done'); },};var subB;setTimeout(function () {  subB = shared.subscribe(observerB);}, 2000);setTimeout(function () {  subA.unsubscribe();  console.log('unsubscribed A');}, 5000);setTimeout(function () {  subB.unsubscribe();  console.log('unsubscribed B');}, 7000);

 

转载地址:http://ucdol.baihongyu.com/

你可能感兴趣的文章
Linux终端概念及相关命令
查看>>
CentOS 6.6编译安装Nginx1.6.2+MySQL5.6.21+PHP5.6.3
查看>>
Java 引用类型变量和基本类型变量做参数时的区别
查看>>
各种查看TCP连接的命令
查看>>
实现web系统的权限控制
查看>>
android项目小模块
查看>>
我的友情链接
查看>>
js 实现日历效果
查看>>
我的友情链接
查看>>
Go笔记-Go命令
查看>>
Redis设计与实现笔记
查看>>
rip汇总前后路由区别
查看>>
一致性Hash算法
查看>>
nmon
查看>>
×××全新升级以提升用户体验
查看>>
js 创建类
查看>>
调整实例恢复时间
查看>>
shell中$0,$?,$!等的特殊用法
查看>>
蓝牙协议栈代码分析
查看>>
我的友情链接
查看>>