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