我想得到一个明确的答案,因为在谷歌我没有得到我想要的。
在此代码中:
titleSubject = new BehaviorSubject('');
setTitle(newTitle: string) {
this.titleSubject.next(newTitle);
this.titleSubject.pipe(
debounceTime(500)
).subscribe( title => super.setTitle(title));
}我有这个服务,我叫它一些组件。因此,我提供服务并调用此方法SetTitle()。
问题是:
使用此代码,我是在每次调用它时创建一个新的订阅,还是每次调用此方法时都要侦听相同的订阅?
我想做的是每次调用该方法时都设置标题,debounceTime为500。
此代码可以工作,但我不希望每次调用该方法时都创建一个新订阅!
发布于 2022-03-26 16:17:58
我不完全确定你想在这里完成什么,因为我不知道super.setTitle指的是什么。这是从一个有一个主题的事物中继承的,还是在其中包含一个主题?
每次调用setTitle方法时都要创建新的订阅。这段代码似乎有效,但它实际上调用了super.setTitle (调用setTitle的次数),所以如果运行setTitle 5次,在第6次运行时,它将调用super.setTitle 6次。
您只需将订阅移至构造函数,只需订阅一次.
consrtructor() {
super()
this.titleSubject.pipe(
debounceTime(500)
).subscribe( title => super.setTitle(title));
}但是,可能还有另一个微妙的错误,或者可能是内存泄漏,这取决于您的实际目标是什么,以及这个服务是如何工作的。
https://stackoverflow.com/questions/71629713
复制相似问题