【发布时间】:2021-08-25 08:47:59
【问题描述】:
我有一个 ajax 请求,它返回一个链接数组。我需要使用这个数组在数组中的每个链接再次发送一个 ajax 请求,然后加入所有内部 ajax 请求的响应。
我已经开始喜欢了
ajax.post( url, data ).pipe(
tap(response) // Array of links
)
【问题讨论】:
我有一个 ajax 请求,它返回一个链接数组。我需要使用这个数组在数组中的每个链接再次发送一个 ajax 请求,然后加入所有内部 ajax 请求的响应。
我已经开始喜欢了
ajax.post( url, data ).pipe(
tap(response) // Array of links
)
【问题讨论】:
您可以使用 RxJS switchMap 操作符从一个 observable 映射到另一个,并使用 forkJoin 函数和 JS Array#map 来并行触发所有请求。
import { forkJoin } from 'rxjs';
import { ajax } from 'rxjs/ajax';
import { switchMap } from 'rxjs/operators';
ajax.post(url, data).pipe(
switchMap(links =>
forkJoin(links.map(link =>
ajax.get(link)
))
)
).subscribe({
next: (response: any) => {
console.log(response);
},
error: (error: any) => {
// handle error
}
});
【讨论】: