Где хранятся данные 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