@qfrontend

Как записать ответ от сервера в переменную?

Делаю запрос на сервер через fetch
Нужно записать ответ который пришёл в переменную CatalogNav.
Во втором блоке (then(data => { ...) присваиваю значение переменной CatalogNav, оно присваивается , в консоли выдаёт заполненный объект .
Но возвращается всё равно пустой объект.
Почему не меняется переменная CatalogNav?

const requestInitialState = () => {
  let CatalogNav = {};
  fetch("http://localhost:3000/data/CatalogNav.json")
    .then(response => {
      return response.json();
    })
    .then(data => {
      CatalogNav = { ...data };
      console.log(CatalogNav); // {0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…}} - выводит заполненный объект
    });
  console.log(CatalogNav); // {} - выводит пустой объект
  return CatalogNav;
};
  • Вопрос задан
  • 1300 просмотров
Решения вопроса 2
GreyCrew
@GreyCrew
Full-stack developer
const requestInitialState = () => fetch("http://localhost:3000/data/CatalogNav.json")
    .then(response => {
      return response.json();
    })
    .then(data => {
      return CatalogNav = { ...data };
      console.log(CatalogNav); // {0: {…}, 1: {…}, 2: {…}, 3: {…}, 4: {…}} - выводит заполненный объект
    });


Вы что то типа этого имели ввиду?
Ответ написан
@wAML
Потому что асинхронный вызов.
console.log(CatalogNav); // {} - выводит пустой объект
Происходит раньше чем then
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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