【发布时间】:2018-12-25 13:55:42
【问题描述】:
我有一组项目,我想在每个元素上进行 HTTP 调用,等待它完成,然后再进行一次调用,一次只能调用一个。
我试过了:
index(item) {
return this.service.index(item).pipe(
map(response => {
// handle success case
}),
catchError(error => {
// handle error case
})
)
}
async processArray(array) {
const promises = array.map(item => this.index(item));
await Promise.all(promises);
}
proccessArray(array);
还有 NGRX 效果:
@Effect()
effect$ = this.actions$.pipe(
ofType<action>(actionTypes.action),
mergeMapTo(this.store.select(getMyArray)),
flatMap((request: any[]) => {
return zip(...request.map(item => {
return this.service.index(item).pipe(
map(response => {
// handle success case
}),
catchError(error => {
// handle error case
})
)
}))
}),
);
还尝试在 for 和 forEach 循环中执行此操作,但它们会立即触发所有请求。我怎样才能做到这一点?
【问题讨论】:
-
你可以在这里使用递归函数,它会在得到前一个数组项的响应后调用自己
-
您要在哪里进行 HTTP 调用?在
request?
标签: javascript rxjs ngrx