我正在尝试发出多个 http 请求并在一个对象中获取返回的数据。
const pagesToFetch = [2,3]
const request$ = forkJoin(
from(pagesToFetch)
.pipe(
mergeMap(page => this.mockRemoteData(page)),
)
)
Run Code Online (Sandbox Code Playgroud)
mockRemoteData() 返回一个简单的 Promise。第一个 Observable 发出后(从 pageToFetch 的第一个条目创建一次 request$ 已完成,不包括第二个值。我该如何解决这个问题?
您可以将每个值转换pagesToFetch
为 Observable,然后等待所有值完成:
const observables = pagesToFetch.map(page => this.mockRemoteData(page));
forkJoin(observables)
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
或者,如果事情没那么简单,您需要pagesToFetch
首先成为一个 Observable 来收集 url,您可以使用以下示例:
from(pagesToFetch)
.pipe(
toArray(),
mergeMap(pages => {
const observables = pages.map(page => this.mockRemoteData(page));
return forkJoin(observables);
}),
)
.subscribe(...);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
7736 次 |
最近记录: |