RxJS管道完成操作符未被调用 导入{ 可见的, 行为主体 }来自‘rxjs’; 进口{ 最后确定, 分享 }来自“rxjs/运营商” 导出类someComponent(){ 公共计数$=新行为主体(0); 公共构造函数(){ 这个文件名为sharesponse() .烟斗( 完成(()=>{ log('finalize called'); })) .订阅((事件:任何)=>{ //做点什么 }); } public shareResponse():可观察{ 返回此.count$.pipe(share()); } 公共事务(事件){ 此.count$.next(事件); } }

RxJS管道完成操作符未被调用 导入{ 可见的, 行为主体 }来自‘rxjs’; 进口{ 最后确定, 分享 }来自“rxjs/运营商” 导出类someComponent(){ 公共计数$=新行为主体(0); 公共构造函数(){ 这个文件名为sharesponse() .烟斗( 完成(()=>{ log('finalize called'); })) .订阅((事件:任何)=>{ //做点什么 }); } public shareResponse():可观察{ 返回此.count$.pipe(share()); } 公共事务(事件){ 此.count$.next(事件); } },rxjs,angular6,angular7,Rxjs,Angular6,Angular7,HTML: 除非您通过调用 此.count$.complete()。这就是finalize()没有发生的原因,因为它正在等待可观察到的完成 查看StackBlitz上的代码示例,请参阅。除非您自己通过调用 此.count$.complete()。这就是finalize()没有发生的原因,因为它正在等待可观察到的完成 查看StackBlitz上的代码示例,请参见。不确定要对上面的代码执行什么操作,但可以在管道()中的finalize()操作符之前使用take(1),强制它在第一个emmitted

HTML:



除非您通过调用
此.count$.complete()
。这就是finalize()没有发生的原因,因为它正在等待可观察到的完成


查看StackBlitz上的代码示例,请参阅。

除非您自己通过调用
此.count$.complete()
。这就是finalize()没有发生的原因,因为它正在等待可观察到的完成


查看StackBlitz上的代码示例,请参见。

不确定要对上面的代码执行什么操作,但可以在
管道()中的
finalize()
操作符之前使用
take(1)
,强制它在第一个emmitted值之后执行finalize操作。

不确定要对上面的代码执行什么操作,但是您可以在
pipe()
中的
finalize()
操作符之前使用
take(1)
,强制它在第一个emmitted值之后进行finalize。

在订阅块中添加了这个.count$.complete(),但仍然没有调用finalize。@su1212查看StackBlitz上的复制。请参阅更新的答案。在订阅块中添加了此.count$.complete(),但仍然没有调用finalize。@su1212查看StackBlitz上的复制。请参阅更新的答案。
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);
    }
}
    <some-tag(countChanged) = (countChanged($event)) > < /some-tag>