【发布时间】:2019-01-16 03:54:27
【问题描述】:
有时,在评估 React 项目时,我会遇到这样的情况:
export default () => new Promise((resolve, reject) => {
setTimeout(() => (Math.round(Math.random()) === 0 ? resolve(countries) : reject()), 100);
});
模拟可能有也可能没有延迟的 API。
我的问题是,当我想在 React 组件中获取这个承诺时,特别是在 ComponentDidMount() 中,我需要做什么来确保 render() 将等待这个承诺来呈现我需要的一切?围绕它的最佳做法是什么?
谢谢!
【问题讨论】:
-
我不确定你在问什么——
render会在调用后立即呈现。组件需要能够在其数据可用之前进行渲染,即使它只是一个空渲染。或者你可以await/etc,但这会阻止一切,这通常是不受欢迎的。 -
另外:
To simulate an API that might or might not have a delay.这不是模拟的。正在模拟的是一个固定的延迟,之后承诺可能会或可能不会遇到错误。大概是为了检查你的捕获错误。 -
你不需要做任何特别的事情。一个承诺是总是异步的(延迟的),所以你只需用
then()和setState()正常处理它。
标签: javascript reactjs promise