javascript - 如何等到函数返回值?
问题描述
我有一个反应课。
componentDidMount() {
let refresh_token = localStorage.getItem('refresh_token');
let isTokenActive = this.checkIfRefreshTokenWorking(refresh_token);
}
checkIfRefreshTokenWorking = (refresh_token) => {
let trueOrFalse = false;
fetch('http://localhost:8888/refresh_token?refresh_token='+refresh_token)
.then(response => {
response.json()
trueOrFalse = true;
})
.catch(err => {
trueOrFalse = false;
})
.finally(() => {
return trueOrFalse;
})
}
isTokenActive
变得不确定。我想等到checkIfRefreshTokenWorking
返回一个值。我需要为此创建一个承诺吗?
解决方案
Javascript 承诺
传递给 new Promise 的函数称为执行器。当新的 Promise 被创建时,executor 会自动运行。它包含最终应该产生结果的生产代码。按照上面的类比:执行者是“歌手”。
它的参数 resolve 和 reject 是 JavaScript 本身提供的回调。我们的代码只在执行器内部。
这是未经测试的代码
componentDidMount() {
let refresh_token = localStorage.getItem('access_token');
this.checkIfRefreshTokenWorking(refresh_token)
.then((data) => console.log(data))
.catch(error => console.log(error));
}
checkIfRefreshTokenWorking = (refresh_token) => new Promise((resolve, reject) => {
let trueOrFalse = false;
fetch('http://localhost:8888/refresh_token?refresh_token='+refresh_token)
.then(response => {
response.json()
trueOrFalse = true;
resolve(response.json());
})
.catch(err => {
trueOrFalse = false;
reject(err);
})
.finally(() => {
return trueOrFalse;
resolve();
})
})
推荐阅读
- flutter - ExpansionTile 上的中心标题
- mysql - 优化 JPA 查询以将列值刷新为 0
- html - 关于如何在屏幕最小宽度(786px)上将此布局转换为两列的任何提示?
- python - 如何使用读取的 x 和 y 位置值绘制轨迹?
- reactjs - 如何正确配置嵌套路由器(react-router-dom)
- sas - 在SAS中将名称列拆分为多个列
- linux - 解决 nasm 示例的问题
- sql - 实体框架数据库上下文:特定表的连接字符串
- reactjs - 使用 scrollview 的 react-native 自滚动效果
- android - 找不到运行 npx react-native start 的模块