gpt4 book ai didi

从 BehaviorSubject 创建的 Angular 2 rxjs 可观察对象不适用于 forkJoin

转载 作者:太空狗 更新时间:2023-10-29 16:56:32 24 4
gpt4 key购买 nike

我正在尝试使用 Observable.forkJoin 并且订阅处理程序永远不会受到影响。 forkJoin 运算符在我的应用程序的其他部分为我工作,在非工作场景中我能想到的唯一区别是可观察对象是使用其 asObservable 从 BehaviorSubject 对象创建的() 函数。

这个订阅被击中了

    let obs = Observable.of(1);

Observable.forkJoin(
obs
).subscribe(data => {
console.log(data);
});

这个没有

    let bs = new BehaviorSubject<number>(1);
let obs = bs.asObservable();

Observable.forkJoin(
obs
).subscribe(data => {
console.log(data);
});

当然,在我的实际用例中,有不止一个观察结果,这就是我首先使用 forkJoin 的原因。

是否需要对 BehaviorSubject 做一些其他事情才能使其与 forkJoin 一起工作?

更新:

在进一步研究 RxJs 文档后,我意识到 Observable.combineLatestforkJoin 更适合我的需要...链接在这里以防万一在这篇 SO 帖子中: http://reactivex.io/rxjs/class/es6/Observable.js~Observable.html#static-method-combineLatest

最佳答案

问题是 forkJoin 会在完成时加入 observable。

在您的第一个代码段中,您正在使用 of 创建一个可观察对象 - 它在 subscribe 后立即发出一个值然后完成。

在您的第二个代码段中,BehaviorSubject 未完成。如果您要调用 complete,您会看到记录到控制台的值:

let bs = new BehaviorSubject<number>(1);
let obs = bs.asObservable();

Observable.forkJoin(
obs
).subscribe(data => {
console.log(data);
});

bs.complete();

关于从 BehaviorSubject 创建的 Angular 2 rxjs 可观察对象不适用于 forkJoin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40165601/

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