Задать вопрос
@kuzubina

Почему ассинхронная функция не возвращает новый массив?

Есть такая функция:
async function getInfo (id, home, away) {
let stage = []

let response = await fetch(url)
let data = await response.json()

let table = data.Table   
if (Object.keys(table).length > 0) {
  for (let y = 0; y < table.length; y++) {
      if(table[y].Title == homeName) {
      	const home = {
      		home: {
      			next: table[y-1].val,
        		this: table[y].val,
        		prev: table[y+1].val
      		}
      	}
      	stage.push(home)
      }
      if(table[y].Title == awayName) {
      	const away = {
      		away: {
      			next: table[y-1].val,
        		this: table[y].val,
        		prev: table[y+1].val
      		}
      	}
      	stage.push(away)
      }
  }
}

return stage
}


Получаю данные, формирую новый массив - все ок, но когда пытаюсь вывести в консоль значения, возвращаемые функцией, получаю Promise { }.
  • Вопрос задан
  • 68 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
  • Академия Эдюсон
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Инженер по тестированию
    6 месяцев
    Далее
Решения вопроса 1
@i1yas
Если вы вызывааете функцию getInfo, то естественно получите Promise, это же асинхронная функция.
Нельзя никак считать результат асинхронной функции синхронно. Await работает только внутри асинхронной функции.
Так что вам нужно делать getInfo(...).then(res => ...)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы