Не удается сохранить результат вызова get с использованием Fetch-узла - PullRequest
0 голосов
/ 24 августа 2018

Я использую Fetch-узел для GET для службы.

 const response = await fetch("MY URL", {
        method: 'GET',
        headers: {
          'Content-Type': 'application/json',
        },
        timeout: 5000,
      }).then(res => res.json()).then(json => console.log(json));
      console.log(response);

Затем я записываю результат во второй console.log(), и все в порядке.Однако, когда дело доходит до второго console.log() ответ не определен.Что мне нужно, так это то, что записано в секунду для сохранения в ответе.

Что-то не так с тем, что я делаю?

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

Как уже упоминалось, вы не возвращаете значение для response, поэтому оно не будет равно чему-либо. Вы можете return JSON из вашего окончательного then, или, если вы чувствуете, что он чище, просто await оба вместо использования .then вообще.

const response = await fetch("MY URL", {
        method: 'GET',
        headers: {
          'Content-Type': 'application/json',
        },
        timeout: 5000
      });

const json = await response.json();

console.log(json);
0 голосов
/ 24 августа 2018

Вы можете написать весь код с помощью async / await. В своем коде вы смешали обещание и асинхронный / ожидающий синтаксис и забыли вернуть json из последней .then() функции.

Вот как я пишу код:

async function fetchData() {
  const response = await fetch("https://jsonplaceholder.typicode.com/todos/1", {
    method: 'GET',
    headers: {
      'Content-Type': 'application/json',
    },
    timeout: 5000,
  })
  const data = await response.json();
  console.log(data);
}

fetchData();
0 голосов
/ 24 августа 2018

Вы должны вернуть свое значение в вашей функции.

const response = await fetch("MY URL", {
        method: 'GET',
        headers: {
          'Content-Type': 'application/json',
        },
        timeout: 5000,
      }).then(res => res.json()).then(json => { 
         // do something 
         return json  //<--- return a value
        });
      console.log(response);
...