Javascript: return функции из промиса [дубликат]

292
07 сентября 2017, 20:06

На данный вопрос уже ответили:

  • Как вернуть значение из события или из функции обратного вызова? Или хотя бы дождаться их окончания 3 ответа
  • Как дождаться завершения всех обещаний? 1 ответ

Есть такая штука:

this.friends = Object.keys(obj).map(x => {
  this.$http.get('http://picasaweb.google.com/data/entry/api/user/'+obj[x].email+'?alt=json')
    .then(response => {
      return response.body; //это нужно вернуть
    }, response => {
      console.log(response);
    });
});

Вопрос в том, как вернуть в map функцию из then в промисе?

UPD: Ответы Здесь не помогли. Единственное, что могло бы помочь оттуда - это генератор. Но он в map функции не работает (тут прочтал и сам проверил)

Answer 1

Есть у Promise метод all(), который возвращает результат выполнения всех промисов в виде массива, соответственно в твоем случае нужно составить массив этих промисов.

const arrayOfPromises = Object.keys(obj).map(x => {
  return this.$http.get('http://picasaweb.google.com/data/entry/api/user/'+obj[x].email+'?alt=json')
    .then(response => response.body);
});

Затем ты юзаешь

Promise.all(arrayOfPromises).then(result => {
  this.friends = result;
})

Где result это массив всех ответов.

READ ALSO
Почему for и forEach работают по-разному? [дубликат]

Почему for и forEach работают по-разному? [дубликат]

На данный вопрос уже ответили:

294
Кроссбраузерный websocket

Кроссбраузерный websocket

Как сделать надежную поддержку websocket на тех браузерах где эта технология не работает? Вычитал что есть несколько сторонних библиотекНо вот...

249
Как запомнить option и label через куки

Как запомнить option и label через куки

Добрый день, друзья! Столкнулся с такой проблемойЗадача такая: необходимо вывести данные, которые указал пользователь в столбце select и данные...

237
javascript date как взять дату предыдущего дня?

javascript date как взять дату предыдущего дня?

Доброе утроСтолкнулся с такой проблемой, хочу взять дату предыдущего дня, но когда дата это первый день в году то работа даты javascript не корректная

293