我试图在一个对象中发出多个http请求并获取返回的数据。
const pagesToFetch = [2,3]
const request$ = forkJoin(
from(pagesToFetch)
.pipe(
mergeMap(page => this.mockRemoteData(page)),
)
)mockRemoteData()返回一个简单的承诺。在第一个可观察的发射后(从pagesToFetch的第一个条目创建的请求$已经完成,第二个值不包括在内)。我怎么才能解决这个问题?
发布于 2018-10-05 10:47:29
您可以将pagesToFetch中的每个值转换为可观察的值,然后等待它们全部完成:
const observables = pagesToFetch.map(page => this.mockRemoteData(page));
forkJoin(observables)
.subscribe(...);或者,如果没有那么简单,并且需要pagesToFetch作为一个可以观察到的urls,那么首先可以使用以下方法:
from(pagesToFetch)
.pipe(
toArray(),
mergeMap(pages => {
const observables = pages.map(page => this.mockRemoteData(page));
return forkJoin(observables);
}),
)
.subscribe(...);https://stackoverflow.com/questions/52663577
复制相似问题