javascript - 如何在 RxJS 5 中创建 Hot Observable

标签 javascript rxjs rxjs5

我使用 RxJS 4 创建 Hot Observable,就像 official documentation 中描述的那样

但是RxJS 5 migration guid没有解释如何创建 Hot Observable。

const source = Observable.create((observer) => {
  asynCall((data) => {
    observer.onNext(data)
  })
})
const published = source.publish()
published.connect()
published.subscribe((data) => {
  console.log(data)
})

使用 Rx5 我遇到了以下错误:

未捕获的类型错误:source.publish 不是函数(...)

最佳答案

您可以使用 .publish().refCount()(或 .share() 作为别名)

var source = Rx.Observable.interval(1000)
    .take(5)
    .publish().refCount();

source.subscribe( item => console.log(`-: ${item}`));
setTimeout(() => {
    source.subscribe( item => console.log(`--: ${item}`));
}, 2500);

http://jsbin.com/cupibitehu/1/edit?js,console

上面设置了两个订阅以表明延迟订阅将从当前发射发生的地方开始,而不是重播以前发射的结果。

记录以下内容

"-: 0"
"-: 1"
"-: 2"
"--: 2"
"-: 3"
"--: 3"
"-: 4"
"--: 4"

http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#instance-method-share

关于javascript - 如何在 RxJS 5 中创建 Hot Observable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37155781/

相关文章:

javascript - Rxjs doOnCompleted() 在 take() 之前不触发

javascript 匿名函数

javascript - 多个表单的 jquery 验证之前的 ajax 表单提交

php - jQuery 使用延迟加载插件从外部文件加载图像

rxjs - 合并弃用警告混淆

javascript - RxJS:调用两个异步调用,返回第一个通过条件的调用,或者它们都没有的特殊值

angular - rxjs 可观察导入问题

javascript - jqscroll/jqscrollTo 根本不工作

typescript - 如何枚举同步可观察对象?

javascript - 使用 redux-thunk 和 redux-observable