答案 0 :(得分:2)
fetch()响应变量中存储的JSON数据在哪里?
最初不是。当您从fetch
获得响应时,响应主体(尚未被fetch
部分读取)(可能正在浏览器的ajax模块中的某些缓冲区中等待,但您不能直接访问它)。它正在等待您通过text
,json
,arrayBuffer
,blob
或formData
方法读取它。
在您的情况下,您大概正在使用json
。调用json
后,主体将被读取到内部缓冲区中并进行解析,然后将其解析结果用于实现json
方法中的承诺。因此,此时,它存储在返回的诺言对象json
中,可以通过使用诺言来访问(而不以其他任何方式)。
要访问响应的JSON,请调用json
并使用产生的Promise:
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
答案 1 :(得分:0)
调用获取服务时,您会在响应对象中得到响应
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);
});