我有两个组件。CreateComment和DisplayComment。DisplayComment组件有自己的嵌套,用于显示线程评论。
现在,每当我从CreateComment组件中创建一个评论时,我都会调用CommentService中的一个主题来发出一个事件。这个主题在DisplayComment组件中被订阅,我将评论推送到要渲染的评论数组中。
由于我有嵌套组件,这个订阅被多次调用(根据线程评论数)。
谁能告诉我是否有什么方法可以限制DisplayComment方法的订阅只执行一次?
如果你需要在一定数量的排放上完成订阅,你可以看看RxJS take 操作符。
take
ngOnInit() { this.someService.someObservable.pipe( take(1) ).subscribe( response => { // do something } ); }
您也可以将参数增加到您希望在订阅完成前发出的值的数量。对于 take(1) 在发出一个值后,就会完成订阅。
take(1)
还有一个RxJS first() 运营商。见 此处 为不同 take(1) 和 first().
first()