накидаю общую идею:
const anyFetch = async () =>
fetch(url)
.then(arr => arr.map(
id => fetch(url + id)
));
const allData = Promise.All(anyFetch).then(arrOfFinishData => doSomething(arrOfFinishData));
Идея следующая:
1. первый фетч возвращает вам промис с массивом айдишников
2. следующий чанк мапит айдишники в новые промисы, которые уже по каждому айдишниику вместо себя возвращают промис с данными.
3. в итоге anyFetch там, где уже надо работать с конечными данными, засовываем в Promise.All, чтобы дождаться всех данных и в чанке делаем с этими данными doSomething