У меня есть массив уникальных идентификаторов, и я хочу выполнить над ними массовое действие (исправление HTTP, удаление и т. Д.). Это должно быть сделано индивидуально, и мне нужно отобразить отдельные результаты.
Поскольку запросы индивидуальны и их ответы не должны влиять друг на друга. Результаты отображаются по мере их поступления.
Каждый вызов - это отдельная Наблюдаемая, и то, что я ищу, это способ узнать, когда все Наблюдаемые завершили .
Метод onCompleted
работает только при отсутствии ошибок.
Цель состоит в том, чтобы предотвратить нажатие кнопки во время обработки вызова.
this.inProgress = {};
this.myIdArray = [1, 2, 3, 4];
actionHandler(type) {
this.inProgress[type] = true;
const myAction = {
patch : id => this.patch(id, this.body),
delete : id => this.delete(id)
};
from(myIdArray)
.pipe (
tap(myAction[type])
)
.subscribe(
res => {},
err => {},
() => this.inProgress[type] = false ); // onCompleted
}
delete(id) {
this.myService.delete(id).subscribe(
res => {} // confirm
err => {} // show error
);
}