大家好,我正在使用await关键字来等待异步调用返回。我的 url 是 get url,因此如果我从浏览器调用它,则会返回 json。问题是,当我尝试从代码中获取数据时,它会返回一个 promise ,但我不知道如何从该 promise 中获取数据响应
getCustomerById: async (id) => {
try {
const response = await fetch("http://www.ready.buzlin.com/buzlinApp/customer/getCustomerById.php?k=xxx&id=xxx");
// console.log("Response Returned: "+ JSON.stringify(response));
// resolve(response.json());
debugger;
return response.json();
} catch (err) {
}
}
现在这就是 json.reponse() 返回给我的内容
有人可以告诉我我做错了什么吗?谢谢
最佳答案
fetch(...)
返回一个promise,并且您可以使用await 来解开该promise,所以这很好。但 response.json()
也会返回一个 promise ,因此您可能还想对其使用 wait :
const response = await fetch(url)
const data = await response.json()
debugger
return data
注意:正如 Thomas 在评论中指出的那样 - 如果你只是在异步函数中返回 response.json()
,你不应该解开它 - 它只会被包装在另一个函数中无论如何都答应。只是因为您正在进入调试器并尝试检查它,所以您需要从 promise 中获取值。事实上,你的函数应该看起来更像这样:
getCustomerById: (id) => {
const url = 'http://example.com/customer/' + id
return fetch(url).then((response) => response.json())
}
关于javascript - 没有从 promise 中获得正确的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48264721/