javascript - 如何使用延迟订阅从可观察对象返回最后发出的值

标签 javascript rxjs

考虑以下代码片段

const interval$ = Rx.Observable.interval(1000).share();

interval$.subscribe(x=> console.log('a=' + a));

setTimeout(() => {
    interval$.subscribe(x=> console.log('b=' + b));
}, 1500);

JSFIDDLE

我需要迟到的订阅者也返回最后发出的值(在本例中为 0)。这如何用 RxJS 完成(注意我需要一个共享的可观察对象)

最佳答案

要创建一个共享的可观察对象来向迟到的订阅者重播最后发出的值,请替换:

const interval$ = Rx.Observable
  .interval(1000)
  .share();

与:

const interval$ = Rx.Observable
  .interval(1000)
  .publishReplay(1)
  .refCount();

share 类似于 .publish().refCount(),所以如果你想重播上次发出的值,publishReplay是你可以使用的。

关于javascript - 如何使用延迟订阅从可观察对象返回最后发出的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705394/

相关文章:

javascript - 如何使用 VS Code 调试 Node.js 中的私有(private)类字段?

javascript - 在 rxjs 中订阅变量

angular - 总是使用 BehaviorSubject 而不是 Subject (RxJs\Angular) 有什么缺点吗?

javascript - String 和 Array 泛型方法将在未来被弃用

javascript - 创建循环 SetTimeOut Jquery 数组

angular - 是否有类似于 withLatestFrom 但带有参数的 RxJS 运算符?

javascript - RxJS Observable 在一些异步操作后触发 onCompleted

javascript - Redux 可观察到的 : dispatch action on multiple clicks (two or more)

javascript - 如何在 Webpack Bundle 中包含手动 import()

javascript - 未定义的查询函数