RxJs 6 - 进行 2 个 http 调用并等待所有响应
RxJs 6 - Make 2 http calls and wait for all responses
@Effect()
initDomain$: Observable<Action> = this.actions$.pipe(
ofType('INIT_DOMAIN'),
mergeMap((action: any) =>
this.http.get('https://demo.api/url1.php').pipe(
switchMap((data) => [
{type: 'INIT_IT', payload: data}
]),
catchError(() => of({type: 'INIT_IT_FAILED'}))
)
)
);
我有这个 angular 效果 (ngrx),它在继续之前发出 1 个请求。我如何发出 2 个请求并在继续之前等待两个响应?我知道 forkJoin() 是答案,但我对语法有点困惑
forkJoin(
this.http.get('myUrl'),
this.http.get('myOtherUrl')
)
或者如果你在一个数组中有一堆观察值,你也可以写
const myArrayOfObservables = [
this.http.get('myUrl'),
this.http.get('myOtherUrl')
];
forkJoin(
myArrayOfObservables
)
这是因为 "forkJoin" 对其参数使用 "spread" (...args) 运算符。
@Effect()
initDomain$: Observable<Action> = this.actions$.pipe(
ofType('INIT_DOMAIN'),
mergeMap((action: any) =>
this.http.get('https://demo.api/url1.php').pipe(
switchMap((data) => [
{type: 'INIT_IT', payload: data}
]),
catchError(() => of({type: 'INIT_IT_FAILED'}))
)
)
);
我有这个 angular 效果 (ngrx),它在继续之前发出 1 个请求。我如何发出 2 个请求并在继续之前等待两个响应?我知道 forkJoin() 是答案,但我对语法有点困惑
forkJoin(
this.http.get('myUrl'),
this.http.get('myOtherUrl')
)
或者如果你在一个数组中有一堆观察值,你也可以写
const myArrayOfObservables = [
this.http.get('myUrl'),
this.http.get('myOtherUrl')
];
forkJoin(
myArrayOfObservables
)
这是因为 "forkJoin" 对其参数使用 "spread" (...args) 运算符。