@maxduma16

Как правильно записать код без функции setTimeout()?

Подскажите пожалуйста как можна правильно записать данный код, без setTimeout, чтобы диспатч был после того как функция вверху полностю закончит роботу. Учитывая что myPostsAPI.getPosts(u) делает много запросов

const allPosts = [];

array.map((u) => {
  myPostsAPI.getPosts(u)
  .then((res) => {
      Object.values(res).map(p => {
        allPosts.push(p)
      })
  })
})

setTimeout(() => {
  //dispatch
  this.props.setPosts(allPosts);
}, 1000)
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Использовать промисы и Promise.all().
Promise.all(array.map(u => myPostsAPI.getPosts(u)))
  .then(responses => {
    for (let response of responses) {
      Object.values(response).forEach(p => {
        allPosts.push(p);
      });
    }
    this.props.setPosts(allPosts);
  });
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы