javascript - 在方法中使用状态,但状态不会立即更新
问题描述
我有一个函数调用以获取新的访问令牌 getNewAccessToken() 并在该方法中将令牌设置为状态。然后调用另一个方法 postComment() 但它还没有正确的 accessToken 状态(因为 setstate 是一个异步调用并且可能还没有值。解决这个问题的最佳方法是确保 postComment( ) 具有正确的状态值?
goPost() {
console.log("In goPost()");
this.getNewAccessToken();
this.postComment();
}
async getNewAccessToken(){
const response = await fetch(
`https://www.reddit.com/api/v1/access_token`... set up fetch
);
if (response.ok) {
this.setState({
accessToken: json.access_token
});
}
}
async postComment() {
let accessToken = this.state.accessToken;
}
解决方案
你可以在里面做这个postComment
-
- 检查状态是否有
access_token
,如果有,跳转到3,如果没有, - 调用
getNewAccessToken
里面的postComment
方法, - 提取
access_token
, access_token
调用以使用,发表评论- 成功完成后,
- 将令牌保存在状态中并
- 下次,如果您的评论因
access_token
过期而失败,请getNewAccessToken
再次致电(在第 2 点之后)并按照循环进行。
推荐阅读
- matplotlib - Julia LatexStrings 绘制文本下标
- go - 不会产生相同的输出 Concurrency Go 工作池
- php - PHP CS Fixer 在数组键和箭头指针之间创建空白
- pandas - 交换从熊猫系列嵌套的列表中的值 - 在帖子末尾有解决方案
- rust-cargo - 私有 CodeCommit 存储库中的货物依赖项
- python - 在迭代 Python 时利用索引的 Numpy 函数
- spring - GraphQL SPQR 中基于 WebSocket 的订阅
- google-coral - Coral 开发板:“读取 SSH 协议横幅时出错”
- reactjs - 类型 'boolean' 不可分配给类型 'false'.ts(2345)
- php - Prestashop 升级 1.7.8.0 PHP 7.4 后购物车不工作