получение json значений (API) из запроса на выборку - PullRequest
0 голосов
/ 06 апреля 2020

Так что я застрял в этом крошечном куске кода, я чувствую, что ответ действительно прост, но я просто не могу понять его.

Я пытаюсь сделать запрос на выборку для получения данных из API. Я хочу получить некоторые значения и собрать их вместе в STRING. Проблема в том, что я просто не могу понять, как вывести json из области выборки. Я продолжаю получать «неопределенное» значение обратно.

Я пробовал разные способы получить возврат, но, похоже, ничего не работает ...):

Мой код:

var url = "https://pokeapi.co/api/v2/pokemon/pikachu"

function getJSON(x){ 
  fetch(x)
  .then((response) => {
    return response.json();
  })
  .then((data) => {
    return data; 
  });
  return data;
}

var data = getJSON(url); 
console.log(data);

Ответы [ 3 ]

0 голосов
/ 06 апреля 2020

Ваш выбор в порядке. Но поскольку это асинхронный вызов, ваш console.log выполняется до того, как функция get JSON успеет вернуть свой ответ. Если вы укажете console.log (data) внутри функции (до оператора возврата данных), вы заметите, что данные возвращаются, как и ожидалось

0 голосов
/ 06 апреля 2020

Немного исправил ваш код, и вот оно:

fetch('https://pokeapi.co/api/v2/pokemon/pikachu')
  .then(function (response) {
    return response.json()
  })
  .then(function (data) {
    console.log('data', data)
  })
0 голосов
/ 06 апреля 2020

Правильный способ сделать это - дождаться завершения обещания sh, так как оно печатает, прежде чем функция получит данные, поэтому последнее должно быть async, и печать должна быть выполнена после него. Это можно сделать следующим образом:

var url = "https://pokeapi.co/api/v2/pokemon/pikachu";
async function getJSON(x){ 
     let response = await fetch(x);
     let data = await response.json();
     return data;
}
getJSON(url).then(data => console.log(data)); 
...