只要有可能,我就需要同时发出所有请求.以下是我的代码的简化版本:
const arr = [
'https://jsonplaceholder.typicode.com/users/1',
'https://jsonplaceholder.typicode.com/users/2',
'https://jsonplaceholder.typicode.com/users/3',
];
let observables = [];
for (let url of arr) {
observables.push(this.http.get(url));
}
const obs$ = this.http.get('http://localhost:3000/users').pipe(
map((data: any) => {
//an array of urls like https://jsonplaceholder.typicode.com/users/5
let urls = data.data;
let observables = [];
for (let url of urls) {
observables.push(this.http.get(url));
}
return observables;
}),
mergeMap((data) => forkJoin([...data]))
);
forkJoin([...observables, obs$]).subscribe({
next: (data) => console.log(data, 'from fork'),
error:(err)=>console.log(err)
});
所以,在这种情况下,我有:
- 一组可观测对象
observables
- 一个可观察的
obs$
,它获取一些URL,在获取URL时,我还需要并行地向这些URL发出请求.
我不在乎结果,我只关心有没有什么差错.这些示例代码似乎工作正常,但是,我有几个问题,因为我试图理解RxJS.
- 为了达到我上面描述的目标,这是一种正确的做事方式吗?
- 这里的
mergeMap((data) => forkJoin([...data]))
->;mergeMap基本上只是帮助我从嵌套的可观测对象中获得一个可观测对象,对吗?所以从技术上讲,我可以使用连接映射或切换映射来达到相同的效果?