[rxjs] Demystifying Cold and Hot Observables in RxJS
2015-08-24 16:35
656 查看
Cold:
Results:
As you can see, 'a' and 'b' all start from '0'. They are independent. As youtube vedio, you can open the same vedio in tow tabs. When you click play, those two vedio will play independently.
Hot: publish().refCount();
Hot Observables are like 'live' youtube video, everyone watch the same vedio at the same pace.
As I wrote in previous article about publish(); you can use this with connect() funciton, but there is problem, we will miss the very first event.
RefCount and a hot observable is analogous to a live video of a band playing at a concert, but the band doesn't start playing if there isn't anyone in the audience. That would be a waste, right? So, why play if there is no one watching?
RefCount tells the band to play when there is at least one person in the audience, in other words, when the number of observers goes from zero to one.
Results:
console.clear(); var Observable = Rx.Observable; var clock = Observable.interval(1000).take(10).map((i) => `${i}!`); clock.subscribe((x) => { console.log(` a ${x}`); }); setTimeout(function(){ clock.subscribe((x) => { console.log(` b ${x}`); }); }, 3500);
Results:
/* " a 0!" " a 1!" " a 2!" " a 3!" " b 0!" " a 4!" " b 1!" " a 5!" " b 2!" " a 6!" " b 3!" " a 7!" " b 4!" " a 8!" " b 5!" " a 9!" " b 6!" " b 7!" " b 8!" " b 9!" */
As you can see, 'a' and 'b' all start from '0'. They are independent. As youtube vedio, you can open the same vedio in tow tabs. When you click play, those two vedio will play independently.
Hot: publish().refCount();
Hot Observables are like 'live' youtube video, everyone watch the same vedio at the same pace.
As I wrote in previous article about publish(); you can use this with connect() funciton, but there is problem, we will miss the very first event.
RefCount and a hot observable is analogous to a live video of a band playing at a concert, but the band doesn't start playing if there isn't anyone in the audience. That would be a waste, right? So, why play if there is no one watching?
RefCount tells the band to play when there is at least one person in the audience, in other words, when the number of observers goes from zero to one.
console.clear(); var Observable = Rx.Observable; var clock = Observable.interval(1000).take(10).map((i) => `${i}!`).publish().refCount(); clock.subscribe((x) => { console.log(` a ${x}`); }); setTimeout(function(){ clock.subscribe((x) => { console.log(` b ${x}`); }); }, 3500);
Results:
/*" a 0!" " a 1!" " a 2!" " a 3!" " b 3!" " a 4!" " b 4!" " a 5!" " b 5!" " a 6!" " b 6!" " a 7!" " b 7!" " a 8!" " b 8!" " a 9!" " b 9!" */
相关文章推荐
- JSON对象和字符串之间的相互转换
- js淡入淡出的图片轮播效果代码分享
- EXT JS中如何设置应用的主题
- js汉字转拼音的方法
- js日期格式化
- ExtJs博客前奏
- js从url中获取参数
- JS精度计算
- js上一页/下一页真分页的页码生成
- Extjs grid select 选取行内容
- Json的序列化与反序列化
- javascript函数传参
- 日常总结——JSP篇(补)
- JavaScript:时间日期格式验证大全
- js去掉字符串中所有的html标记
- 什么是JavaScript闭包终极全解之一——基础概念
- JS刷新页面
- js实现的简洁网页滑动tab菜单效果代码
- js 隐式转换 一小坑
- JavaScript小技巧