У меня есть массив элементов, которые на каждом элементе я хочу сделать 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
, но они запускают все запросы одновременно.Как мне этого добиться?