Я столкнулся со сценарием, в котором мне нужно было сделать внутренний вызов для всех идентификаторов в массиве объектов.
Поэтому я подумал перебирать массив make call один за другим. Что, очевидно, было неправильным, поскольку вызов был асинхронным, поэтому он возвращал результат позже.
В результате я получил пустой результирующий массив.
Код без forkjoin
константный массив результатов: любой = [];
this.sequenceIdArray.forEach(
(specId: любой, индекс: число) =› {
this.projectService.getIdDetails(
index,specId).subscribe((data)=›{
resultArray.push(данные)
})
});
this.finalResult = […resultArray]; // Получал пустой массив в resultArray
Forkjoin пришел на помощь :D
Где мы получим результат для всех идентификаторов в массиве (просто правильно: P)
Код с forkjoin
const callArray: any = [];
this.sequenceIdArray.forEach(
(specId: любой, индекс: число) =› {
callArray.push(
this.projectService.getIdDetails(
индекс,specId));
});
forkJoin(callArray).subscribe((data) =› {
this.finalResult = […данные]; // мы получим данные для всех идентификаторов в массиве данных
})
Надеюсь, это будет полезно для всех вас.
Продолжай кодить :)