Получение массива из Promise {}

Всем привет!

пытаюсь получить данные из json файла:

const getData = async () => {
const data = await fetch('db.json');

if (data.ok) {
  return data.json();
} else {
  throw new Error(`Данные не были получены, ошибка ${data.status} ${data.statusText}`);
}
};

Теперь когда хочу передать или просто увидеть массив через консоль, вот так:

const render = getData();
console.log(render);

То пишет мне :

Promise {<pending>}
 __proto__: Promise
 [[PromiseState]]: "fulfilled"
 [[PromiseResult]]: Array(24)

Как этот массив Array(24) передать в переменную? или обработать фильтром например.


Ответы (1 шт):

Автор решения: yar85

Дело в том, что async функции всегда возвращают экземпляр Promise.
Поэтому, либо используем await (если вызывающий код сам находится в async функции... или вне функций, если среда выполнения JS позволяет глобальный await):

try {
  const render = await getData();
  console.log(render);
  /* .... */
} catch (err) {
  console.error(err);
}

, либо помещаем обработку результата промиса в коллбэк метода then:

getData().then(render => {
  console.log(render);
  /* .... */
}).catch(err => {
  console.error(err);
});
→ Ссылка