angular - 为什么删除 BehaviourSubject 会导致我的服务延迟 3-4 秒?
问题描述
我之前创建了一个BehaviourSubject
,并且在订阅它时我正在拨打服务电话。但是,由于 的性质BehaviorSubject
,对BehaviouSubject
. 所以,在进一步阅读时,我BehaviourSubjedct
改为ReplaySubject(1)
.
现在,在我定义了服务的主@Injectable
类中,还有另一个独立的服务,一旦我进行了上述更改,它就会被延迟。我如何在这里确定问题的原因?
组件.ts
constructor(private _subjectService: SubjectService, private _s1: Service1){
this._s1.Call1();
this.testFunction();
}
testFunction(){
this._subjectService.GetData().subscribe(res => {
if (res !== null) {
this._s1.Call2();
}
}
}
主题服务
// filterSubject = new BehaviorSubject(<KendoRequestVM>{});
// filterDataSubject = new BehaviorSubject(<KendoRequestVM>{});
filterSubject = new ReplaySubject<KendoRequestVM>(1);
filterDataSubject = new ReplaySubject<KendoRequestVM>(1);
在这里,当我使用BehaviouSubject
而不是ReplaySubject
.
解决方案
行为主体总是会立即返回(甚至同步)。重播主题只有在有值的情况下才会立即/同步返回。仅使用您共享的代码是不可能的,因为您没有共享填充主题的部分(例如调用next
),但这似乎是最有可能的解释。
推荐阅读
- python - Python:如何使用 for 循环执行我的代码 5 次?
- html - 单击 Angular 8 外部关闭的下拉菜单
- html - Laravel 页面已过期 419
- mysql - 无法使用“docker-compose”连接(桥接)任何数据库
- google-bigquery - BigQuery - 崩溃次数的差异
- python - 如何只输出整个段落 [Google Cloud Vision API, document_text_detection]
- c# - 如何在代码中的sql表列中插入默认值
- android - 如何更改图标右侧的底部导航文本外观
- regex - Pandas - 在常用词之后提取特定文本
- bash - Shell函数从两个主机grep计数并返回wc的总和