[英]pending promise inside async/await
我試圖在 componentDidMount 中獲取一些數據,然后將其設置為 state,為此寫了一個異步等待 function。 但是,如果我試圖在等待之后立即使用值設置 state,則該值將設置為待處理的 promise,但控制台日志記錄會給出正確的 output。 出於這個原因,我調用 getData().then() 來設置數據,為什么它給出未決的 promise 有人可以在這里清除這個概念嗎?
componentDidMount() {
async function getData() {
const baseUrl = `https://........`;
const response = await fetch(baseUrl);
if (response.status === 200) {
const json = await response.json();
const { data } = json;
//console.log(data) =>correct output
return data;
}
return null;
}
getData().then(data => {
this.setState({ names: data });
});
}
你可以簡單地這樣做:
componentDidMount() { const baseUrl = `https://........`; fetch(baseUrl).then((response) => response.json()).then(result => { this.setState({ names: result.data}); }); }
getData
是一個異步 function ,您可以在其中同步您的 fetch 調用。 所以它返回一個 promise。 獲取響應后,您正在控制台登錄該 function 。 所以它記錄數據。
您可以將其視為您使用的Fetch
function,您正在等待它,因為它是異步的 function,您應該等待響應。 getData
也一樣。 無論您如何等待,使用then
或await
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.