在我的上下文中,我有一个返回promise的LocalFunction
。
LocalFunction: () => Promise<void>
LocalFunction: () => {
return externalCall.getBooks().then((books) => {
this.setState({ Books: books })
})
}
我可以基于上下文状态中更新的Books
对象在另一个组件中调用此函数,如下所示:
this.props.LocalFunction().then(() => {
// do something with this.props.Context.Books
})
但我知道React会批量更新状态。那么,在没有使用新书更新Books
状态的情况下调用LocalFunction时,我会遇到竞争条件吗?
我知道一种避免它的方法是将LocalFunction包装在一个新的Promise中,并在this.setState({ Books: books }, resolve)
中解决它,但如果可能的话,我想避免这样做。
发布于 2019-06-25 08:49:38
使用async/await怎么样?
LocalFunction: async (needUpdate = false) => {
const result = await externalCall.getBooks();
if(needUpdate){
this.setState({ Books: result })
}
return result;
}
this.props.LocalFunction().then((res) => {
console.log(res)
// do something with this.props.Context.Books
})
当您需要更新状态时
LocalFunction(true)
https://stackoverflow.com/questions/56745333
复制相似问题