Где JSON хранится в переменной ответа? - PullRequest
0 голосов
/ 14 мая 2019

Где хранятся данные JSON в переменной ответа fetch ()?

Я попытался проверить свойства консоли, проверив заголовки, но там их не вижу.

enter image description here

Ответы [ 2 ]

2 голосов
/ 14 мая 2019

Где хранятся данные JSON в переменной ответа fetch ()?

Изначально это не так.Когда вы получаете ответ от fetch, тело ответа еще не прочитано (частью fetch) (возможно, оно ожидает в некотором буфере в модуле ajax браузера, но вы можете 'т доступ к нему напрямую).Он ждет, пока вы прочитаете его с помощью методов text, json, arrayBuffer, blob или formData.

В вашем случае вы, вероятно, используете json.Когда вы вызываете json, тело считывается во внутренний буфер и анализируется, а затем результат анализа используется для выполнения обещания из метода json.Таким образом, в этот момент он сохраняется в возвращаемом объекте обещания json, доступном при использовании обещания (и никак иначе).

Чтобы получить доступ к JSON ответа, вы вызываете json ииспользуйте полученное обещание:

fetch(/*...*/)
.then(response => {
    if (!response.ok) {
        throw new Error("HTTP status code " + response.status);
    }
    return response.json();
})
.then(data => {
    // Use the parsed data here
})
.catch(error => {                    // If you return the chain, you can leave this off
    // Handle/report the error here
});

или в функции async:

const response = await fetch(/*...*/);
if (!response.ok) {
    throw new Error("HTTP status code " + response.status);
}
const data = await response.json();
// Use the parsed data here
0 голосов
/ 14 мая 2019

при вызове службы извлечения вы получаете ответ в объекте ответа

fetch('./api/myservice')
.then(
function(response) {
  if (response.status !== 200) {
    console.log('Looks like there was a problem. Status Code: ' +
      response.status);
    return;
  }

  // response
  response.json().then(function(data) {
    console.log(data);
  });
}
)
.catch(function(err) {
console.log('Fetch Error :', err);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...