我正在使用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()
时,响应是不确定的。
我需要的是第二秒中记录的任何内容,以存储在响应中。
我的工作有什么问题吗?
答案 0 :(得分:2)
如前所述,您没有返回response
的值,因此它将不等于任何值。您可以return
来自最终then
的JSON,或者如果您觉得它更干净,则只需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);
答案 1 :(得分:1)
您应该在函数中返回值。
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);
答案 2 :(得分:1)
您可以使用async / await编写整个代码。在代码中,您混合了promise和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();