为什么当订阅两次rx 2.3中的observable时,第二次订阅没有收到任何值
why does second subscribtion not receive any values when subscribing twice to observable in rx 2.3?
我有一个基本的例子,根据rxjs的文档,它的行为并不像我预期的那样。我希望这两个订阅都能接收到所有值。
文件中提到:
然后,两个观察者订阅这个序列并打印出它的值。您会注意到每个订阅者的序列都会重置,其中第二个订阅将从第一个值重新启动序列。
let s1 = rx.Observable.from([1, 2, 3, 4, 9, 11])
s1.subscribe(
x => console.log(x),
x => console.log(x),
x => console.log('complete'))
s1.subscribe(
x => console.log(x),
x => console.log(x),
x => console.log('complete'))
然而,第二次订阅只记录"完成"
事实证明,该示例在rxjs 2.4中可以正常工作,但在2.3中则不然。有人知道发生了什么变化吗?我在发行说明中找不到它
以下是2.3.20的jsfiddle:fiddle
这里有一个2.4.1:fiddle
这种行为对于冷态可观测对象来说是不正确的。从数组创建的可观察对象是冷可观察对象,并且不能在一个观察对象上共享订阅。对于正确的工作,你可以将你的可观察到的转化为热可观察到。您可以查看此文档http://xgrommx.github.io/rx-book/content/observable/observable_instance_methods/publish.html.在你的情况下,你可以用这样的东西http://jsbin.com/mowaco/edit?js安慰现在两个订阅并行工作。
相关文章:
- Javascript Select OnChange没有'不要第二次工作
- 相同的RegExp返回不同的结果-第一次是正确的结果,第二次是null
- 单击仅在第二次单击后有效
- 推特引导:弹出窗口不会在第一次点击时出现,但会在第二次点击时显示
- 第二次点击具有不同功能的按钮并更改文本
- 更改第二次推送时不起作用的元素高度
- 在第二次选择中选择2更改属性
- on(“点击”)仅在第二次点击后触发
- 在HTML中,如果第二次加载相同的脚本文件,它还会被加载吗
- Sails.js/Waterline.add()和.remove()仅适用于第二次调用
- 尝试在两次迭代中警告同一选择器的值,在第一次迭代中得到正确的值,而在第二次迭代中获得不正确的值.为什么?
- java脚本中的谷歌地图在第二次点击时不起作用
- 更改类名后,将第二次单击事件附加到元素
- 提交按钮只能在onchange调用输入文本后第二次点击时工作
- 将音频第二次转换为分钟和秒格式
- Jquery移动转换复选框在Jquery onclick函数()中第二次选中不起作用
- 在连续第二次单击时禁用href
- 正在给用户第二次尝试
- 为什么第二次调用isNaN时它不起作用
- 为什么当订阅两次rx 2.3中的observable时,第二次订阅没有收到任何值