在另一个订阅中返回订阅数据
Posted
技术标签:
【中文标题】在另一个订阅中返回订阅数据【英文标题】:Return a subscription data within another subscription 【发布时间】:2021-12-05 10:58:43 【问题描述】:this.subscription1$
.pipe(
takeUntil(this.ngUnsubscribe),
map((data1) =>
return data1.map((data2, index) =>
// we should return here the value, not the subscription
return this.subscription2(index + 1).pipe(
takeUntil(this.ngUnsubscribe),
map((data3) =>
return of(data3);
)
);
);
),
)
.subscribe((data) =>
console.log('FINAL: ', data);
);
最后的控制台显示:
[可观察,可观察,可观察,可观察]
我怎样才能直接获取其他订阅数据而不获取任何可观察的数据?
【问题讨论】:
【参考方案1】:取决于您希望如何组合订阅 2 结果。 如果您想等待全部完成,您可以使用 forkJoin
this.subscription1$.pipe(
takeUntil(this.ngUnsubscribe),
switchMap((data1) =>
return forkJoin(...data1.map((data2, index) => this.subscription2(index + 1)))
)
).subscribe((data) =>
console.log('FINAL: ', data);
)
也许您希望combineLatest
关注特定变化。根据您的用例在此处选择合适的运算符
【讨论】:
我只需要最新的数据。我不需要合并任何结果,只需获取最后一个 也试过了,但没有触发最终控制台 你确定所有的subscription2 observables 都发出/关闭了吗?以上是关于在另一个订阅中返回订阅数据的主要内容,如果未能解决你的问题,请参考以下文章