RxJs запросы в цикле

У меня есть список параметров и для каждого параметра отправляется запрос на сервер. Количество параметров может быть разным, поэтому запросы отправляются в цикле. Вопрос, как мне отправить запросы по всем параметрам, дождаться ответа от всех запросов и продолжить выполнение программы. Для этого нужно использовать Rx Js.

    parameter.dependParams.forEach(function (element) {

    let par = pars.find(p => locator(p, element));
    if (par) {

      par.loading = true;

      service.getValues(element, pars, action.action, action.actionScheme).subscribe(
        data => {
          par.values = data;
          par.loading = false;
          console.log("Значения получены");
        },
        error => {
          this.error = error.error.message || error.statusText;
          par.loading = false;
          this.showError();
        }
      );}}

Ответы (1 шт):

Автор решения: Sergey Glazirin

Так как запросы разные, то можно получить список методов, которые возвращают Observable, то есть в вашем примере service.getValues(element, pars, action.action, action.actionScheme).

Ну а дальше, получается нужно их все вызвать через forkJoin, как предложили в комментариях.

В коде будет выглядеть как-то так:

const observables = parameter.dependParams.map(element => {
    // ошибку можно обработать здесь в pipe, если надо обработать по каждому
    service.getValues(element, pars, action.action, action.actionScheme);
});
// В subscribe будет массив ответов ваших запросов, нужно будет только обработать результат и ошибки
forkJoin(observables).subscribe(...)

P.S. Логику с if (par) можно решить через filter перед map.

→ Ссылка