Обработка нескольких подписок одновременно - PullRequest
0 голосов
/ 10 июля 2019

У меня есть массив строк, где я хотел бы вызвать асинхронную функцию для каждой строки. Каков стандартный способ сделать это? Я использовал цикл for, но подписка никогда не выполнялась, поэтому кажется, что использование цикла for некорректно.

Это то, что у меня сейчас есть:

for (let i = 0; i < this.selectedNodes.length; i++) {
    this.fileSelectorService.fixPath(this.selectedNodes[i])
        .subscribe(res => {
            // This block never gets hit when using a for loop (but it does hit without the for loop)
            var fixedPath = res;
        })
    }
} 

1 Ответ

1 голос
/ 10 июля 2019

Вы должны использовать forkJoin() после сопоставления строк с массивом наблюдаемых, как это:

const arrayOfObs$ = this.selectedNodes.map(s => this.fileSelectorService.fixPath(s));

forkJoin(arrayOfObs$)
      .subscribe(result => {
                //result will be an array of the response for this.fileSelectorService.fixPath(s)
                console.log(result);
                //Do whatever you want to do with this result
            });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...