【发布时间】:2022-01-12 15:18:00
【问题描述】:
我试图在 componentDidMount 中获取一些数据,然后将其设置为状态,为此编写了一个异步等待函数。但是,如果我试图在等待之后立即使用值设置状态,则该值被设置为待处理的承诺,但控制台日志记录会给出正确的输出。 出于这个原因,我调用了 getData().then() 来设置数据,为什么它给出了未决的承诺,有人可以在这里澄清这个概念吗?
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 });
});
}
【问题讨论】:
-
在它解析之前,任何
asyncexpression,包括promise,如果读取/记录,将输出:promise with in a pending state。在它被解决/拒绝后,任何读取/记录它都会返回该结果。您能否更详细地说明不清楚的部分?阅读this 可能会有所帮助。
标签: javascript reactjs asynchronous async-await react-lifecycle