当 ReplaySubject 已“完成”时发出信号

0 rxjs typescript rxjs5 angular-observable

我正在尝试找出一种好方法来表明 ReplaySubject 当前为“空”。

import {ReplaySubject} from 'rxjs/ReplaySubject';
const rs = new ReplaySubject<Object>();

 // ...
constructor(){
  this.sub =  rs.subscribe(...);
}
Run Code Online (Sandbox Code Playgroud)

每次调用构造函数时,它将重播主题中的所有项目。然而我的问题是 - 是否有一些我们可以监听的事件,告诉我们主题何时变空?

我唯一能想到的是在主题完成时触发自定义/不同的事件,如下所示:

rs.next({done:true});
Run Code Online (Sandbox Code Playgroud)

将数据传递给 next() 方法是表示 ReplaySubject (暂时)为空/没有事件的最佳方式吗?

Vos*_*vid 5

因为Subject也是一个Observer,所以你可以complete()在最终next()调用之后调用。然后你可以用方法的第三个参数来监听它subscribe(...)

const rs = new ReplaySubject<Object>();
rs.next({a: 1})
rs.complete()

rs.subscribe(
    obj => console.log(obj),
    error => {},
    () => console.log('completed')
);
// Outputs
// {a: 1} completed
Run Code Online (Sandbox Code Playgroud)