我有一个rxjs ReplaySubject,它根据我所处的环境,会发出值或null。意思是,如果在某个特定环境中,我调用服务并获取数据,则会发出值。如果我不在该环境中,则只需在重放主题上调用next(null) 。如果我订阅这个内容的组件,一切都正常,如果服务调用成功,回调也能正常触发。但如果调用了next(null),则我的回调函数将永远不会被触发。
我的假设是,在我订阅之前设置的null值不会被返回,但我认为这就是ReplaySubject的全部意义。我已经谷歌过很多次,但始终找不到解决问题的方法,只得到了ReplaySubject的自述文件。希望有人能告诉我我做错了什么。我认为可能是因为我传入了null,所以我尝试改为传入"Hello",但仍然没有反应。以下是示例代码:
我的假设是,在我订阅之前设置的null值不会被返回,但我认为这就是ReplaySubject的全部意义。我已经谷歌过很多次,但始终找不到解决问题的方法,只得到了ReplaySubject的自述文件。希望有人能告诉我我做错了什么。我认为可能是因为我传入了null,所以我尝试改为传入"Hello",但仍然没有反应。以下是示例代码:
public Data = new ReplaySubject<any>(1);
init(){
if(!window.Something){
//subscribe callback is never fired in this case.
this.Data.next(null);
}else{
this.http.get(...).map(...{
//this works
this.Data.next(result);
});
}}
我犯的错误实际上与Rx无关。我记不清具体情况了,但是它使得条件永远不为真。这导致代码无法执行。