gpt4 book ai didi

angular - 可观察的 forkJoin 未触发

转载 作者:太空狗 更新时间:2023-10-29 17:31:07 25 4
gpt4 key购买 nike

我正在尝试在两个 Observable 上使用 forkJoin。其中之一以流的形式开始......如果我直接订阅它们,我会收到响应,但 forkJoin 不会触发。有什么想法吗?

private data$: Observable<any[]>;
private statuses$: Observable<any[]>;
private queryStream = new Subject<string>();

....

this.data$ = this.queryStream
.startWith('')
.flatMap(queryInput => {
this.query = queryInput
return this._companyService.getCompanies(this.queryRequired + ' ' + this.query, this.page, this.sort);
})
.share();

...

Observable.forkJoin(this.statuses$, this.companies$)
.subscribe(res => {
console.log('forkjoin');
this._countStatus(res[0], res[1]);
});


// This shows arrays in the console...

this.statuses$.subscribe(res => console.log(res));
this.companies$.subscribe(res => console.log(res));

// In the console
Array[9]
Array[6]

最佳答案

forkJoin 仅在所有内部可观察对象完成时发出。如果您需要一个等价于 forkJoin 的工具,它只监听来自每个源的单个发射,请使用 combineLatest + take(1)

combineLatest(
this.statuses$,
this.companies$,
)
.pipe(
take(1),
)
.subscribe(([statuses, companies]) => {
console.log('forkjoin');
this._countStatus(statuses, companies);
});

只要两个源都发出,combineLatest 就会发出,take(1) 会在之后立即取消订阅。

关于angular - 可观察的 forkJoin 未触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42809658/

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