首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BehaviorSubject next()

BehaviorSubject next()
EN

Stack Overflow用户
提问于 2022-03-26 16:11:17
回答 1查看 444关注 0票数 0

我想得到一个明确的答案,因为在谷歌我没有得到我想要的。

在此代码中:

代码语言:javascript
复制
titleSubject = new BehaviorSubject('');

setTitle(newTitle: string) {
    this.titleSubject.next(newTitle);

    this.titleSubject.pipe(
        debounceTime(500)
    ).subscribe( title => super.setTitle(title));
    
}

我有这个服务,我叫它一些组件。因此,我提供服务并调用此方法SetTitle()。

问题是:

使用此代码,我是在每次调用它时创建一个新的订阅,还是每次调用此方法时都要侦听相同的订阅?

我想做的是每次调用该方法时都设置标题,debounceTime为500。

此代码可以工作,但我不希望每次调用该方法时都创建一个新订阅!

EN

回答 1

Stack Overflow用户

发布于 2022-03-26 16:17:58

我不完全确定你想在这里完成什么,因为我不知道super.setTitle指的是什么。这是从一个有一个主题的事物中继承的,还是在其中包含一个主题?

每次调用setTitle方法时都要创建新的订阅。这段代码似乎有效,但它实际上调用了super.setTitle (调用setTitle的次数),所以如果运行setTitle 5次,在第6次运行时,它将调用super.setTitle 6次。

您只需将订阅移至构造函数,只需订阅一次.

代码语言:javascript
复制
consrtructor() {
    super()
    this.titleSubject.pipe(
        debounceTime(500)
    ).subscribe( title => super.setTitle(title));
}

但是,可能还有另一个微妙的错误,或者可能是内存泄漏,这取决于您的实际目标是什么,以及这个服务是如何工作的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71629713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档