Для дожидания полной загрузки всех данных и отрисовки их после этого можно использовать метод Promise.all().
Примерная последовательность действий будет следующей:
1. Создайте массив промисов, каждый из которых представляет асинхронную операцию получения данных.
2. Используйте метод Promise.all() для ожидания завершения всех промисов из массива:
```javascript
const promises = [
getData1(),
getData2(),
getData3()
];
Promise.all(promises)
.then(data => {
// Рендеринг данных
})
.catch(error => {
// Обработка ошибок загрузки данных
});
```
3. В методе .then() получите массив данных, который будет содержать данные, возвращаемые каждым промисом из массива промисов. Вы можете обработать эти данные и передать их в функцию для рендеринга или использовать их непосредственно внутри метода .then().
4. Обработайте исключения с помощью метода .catch(), чтобы обработать ошибки загрузки данных, если они возникнут.
5. Внутри метода .then() выполните необходимые действия для отрисовки данных на странице.
Обратите внимание, что метод Promise.all() возвращает промис, который зарезолвится только после того, как все промисы в массиве будут выполнены. В .then() вы получите массив данных в том же порядке, в котором были переданы промисы.