gpt4 book ai didi

rxjs - 延迟 Rxjs BehaviorSubject 机制

转载 作者:行者123 更新时间:2023-12-04 13:45:23 26 4
gpt4 key购买 nike

我有以下要求。

我有一个带有 BehaviorSubject 的 Angular 服务。
完成一个 http 请求,完成后将使用该值调用 BehaviorSubject.next 方法。
此值可以在单个页面的生命周期中更改。

不同的订阅者注册到它,并在发生变化时被调用。

问题是,虽然 http 请求未决,但 BehaviorSubject 已经包含一个默认值,订阅者已经立即获得了这个值。

我想要的是订阅者必须等到 http 请求完成(延迟)并在 http 请求完成时获取值并设置值。
所以我需要的是某种延迟行为主体机制。

我将如何使用 rxjs 实现这一点?

另一个要求是,如果我在一个方法中订阅了行为主题,我们希望订阅者获得第一个非默认值并且订阅结束。我们不希望重新执行函数中的本地订阅。

最佳答案

对您的行为主题使用过滤器,这样您的订阅者就不会获得第一个默认发出的值:

mySubject$: BehaviorSubject<any> = new BehaviorSubject<any>(null);

httpResponse$: Observable<any> = this.mySubject$.pipe(
filter(response => response)
map(response => {
const modifyResponse = response;
// modify response
return modifyResponse;
}),
take(1)
);
this.httpResponse$.subscribe(response => console.log(response));

this.myHttpCall().subscribe(response => this.mySubject$.next(response));

如果需要,您当然可以将 httpResponse$ observable 包装在一个方法中。

关于rxjs - 延迟 Rxjs BehaviorSubject 机制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49429322/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com