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

Как вывести значение из функции при асинхронном запросе?

Есть код, в котором я делаю запрос и хочу из функции data чтобы глобально был виден результат в виде массива. Но мне возвращается пустой массив.

Подскажите как решить проблему?

https://codesandbox.io/s/18rwyww674
  • Вопрос задан
  • 200 просмотров
Подписаться 1 Простой 1 комментарий
Решения вопроса 2
rockon404
@rockon404
Frontend Developer
Проблема в полном непонимании принципа работы асинхронного кода.
Исправить можно так:
const getUsers = () => fetch("https://jsonplaceholder.typicode.com/users");

getUsers().then(res => res.json()).then(res => {
  document.getElementById("app").innerHTML = JSON.stringify(res);
})
Ответ написан
Комментировать
Ну или через async / await

async function data() {
  return fetch("https://jsonplaceholder.typicode.com/users")
    .then(response => response.json())
    .then(response => JSON.stringify(response))
};

async function setHTML() {
  document.getElementById("app").innerHTML = await data();
}

setHTML();
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
paulfcdd
@paulfcdd
PHP/Sf/WEB developer
let arr = [];
  fetch("https://jsonplaceholder.typicode.com/users")
    .then(response => response.json())
    .then(response => response)
    .catch(error => console.error(error));
  return arr;


вы объявляете пустой массив а потом его возвращаете. Может решить проблему тем, что пушить в массив данные?

UPD:
Например, можно сделать так

let arr = [];
 fetch("https://jsonplaceholder.typicode.com/users")
 .then(function(response) {
     return response.json();
 }).then(function(user) {
   arr.push(user);
   document.getElementById("app").innerHTML = JSON.stringify(arr);
 })

 console.log(arr)
Ответ написан
Ваш ответ на вопрос

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

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