rxjs - RxJS管道终结操作符没有被调用
问题描述
import {
Observable,
BehaviorSubject
} from 'rxjs';
import {
finalize,
share
} from 'rxjs/operators'
export class someComponent() {
public count$ = new BehaviorSubject < any > (0);
public constructor() {
this.shareResponse()
.pipe(
finalize(() => {
console.log('finalize called');
}))
.subscribe((event: any) => {
// Do something
});
}
public shareResponse(): Observable < any > {
return this.count$.pipe(share());
}
public countChanged(event) {
this.count$.next(event);
}
}
HTML:
<some-tag(countChanged) = (countChanged($event)) > < /some-tag>
解决方案
BehaviorSubject 不会完成,除非您自己通过调用
this.count$.complete()
. 这就是为什么 finalize() 没有发生的原因,因为它正在等待 Observable 完成。
查看 StackBlitz 上的代码示例,请参阅链接。
推荐阅读
- laravel - 如何在 Laravel 登录中阻止 GET 方法?
- c# - 为什么不 AsyncUnaryCall
和其他人扩展任务 ? - c# - 使用 Continuation 链接任务的正确方法
- git - 如何列出存储库中的所有提交及其父信息以及使用命令行或 JGit 添加和删除的行?
- json - 无法检索参数输出的值
- java - 如何在android中发送没有键盘的按键动作?
- apache-spark - 在 foreach 中创建数据框的替代方法
- amazon-web-services - 如何将 DynamoDb 迁移到 RDS (Aurora)
- python - 如果文件中不存在,则从字典中写入某个键的值
- javascript - JS日期到ISO字符串奇怪的行为