我正在尝试发出多个http请求,并在一个对象中获取返回的数据。
const pagesToFetch = [2,3]
const request$ = forkJoin(
from(pagesToFetch)
.pipe(
mergeMap(page => this.mockRemoteData(page)),
)
)
mockRemoteData()返回一个简单的Promise。 在第一个Observable发出后(一旦从pagesToFetch的第一个条目创建的请求$完成,则不包含第二个值。如何解决此问题?
答案 0 :(得分:2)
您可以将pagesToFetch
中的每个值变成一个Observable,然后等待它们全部完成:
const observables = pagesToFetch.map(page => this.mockRemoteData(page));
forkJoin(observables)
.subscribe(...);
如果不是那么简单,并且您需要pagesToFetch
成为Observable才能首先收集网址,则可以使用以下示例:
from(pagesToFetch)
.pipe(
toArray(),
mergeMap(pages => {
const observables = pages.map(page => this.mockRemoteData(page));
return forkJoin(observables);
}),
)
.subscribe(...);
答案 1 :(得分:0)
尝试以下示例格式...
Observable.forkJoin(
URL 1,
URL 2
).subscribe((responses) => {
console.log(responses[0]);
console.log(responses[1]);
},
error => {console.log(error)}
);