Reactjs 经过一段时间后发送操作
所以我第一次玩React和Redux。在我的应用程序中,我使用第三方API获取数据等等,在这方面一切都很好。然而,像大多数受保护的API一样,我需要获取一个短期令牌来针对API发出请求,我想在某种事件上设置一个计时器,以便在后台刷新令牌。最好的方法是什么?令牌有一个到期日,因此我可以设置一个计时器,在令牌到期前几分钟获取一个新令牌。我提出的第一个解决方案是嵌套承诺,但这可能不是最好的解决方案 首先请求您的令牌,然后在Reactjs 经过一段时间后发送操作,reactjs,redux,react-redux,Reactjs,Redux,React Redux,所以我第一次玩React和Redux。在我的应用程序中,我使用第三方API获取数据等等,在这方面一切都很好。然而,像大多数受保护的API一样,我需要获取一个短期令牌来针对API发出请求,我想在某种事件上设置一个计时器,以便在后台刷新令牌。最好的方法是什么?令牌有一个到期日,因此我可以设置一个计时器,在令牌到期前几分钟获取一个新令牌。我提出的第一个解决方案是嵌套承诺,但这可能不是最好的解决方案 首先请求您的令牌,然后在回调中请求真实数据 使用axios时,会出现如下情况: axios.get('/
回调中请求真实数据
使用axios
时,会出现如下情况:
axios.get('/my/token/path/')
.then(() => {
axios.get('/my/real/data/path')
.then(() => {
// do something with data...
}
}
向此请求添加捕获。如果令牌如您所说有到期日,您可以保存它并创建某种条件来检查该日期是否未到期,并根据该条件请求新令牌或获取现有令牌
伪代码中的示例:
function getTokenPromise() {
if ('cookie with token exists') return Promise.resolve('my token from cookie');
return axios.get('/my/token/path/');
}
// somewhere else in the code
getTokenPromise().then(() => {
//do something with data
});
您可以做的是将您获得的令牌保存为具有过期期限的cookie,然后使用setInterval
函数设置计时器以监视cookie。一旦cookie过期并返回undefined,它就会自动从浏览器中删除,这样您就可以再次进行API调用
为此,您可以使用npm包react cookie
import cookie from 'react-cookie';
计时器
setInterval(function() {
var getCookie = cookie.load('token');
if(getCookie === undefined) {
// send an API fetch request here
}
}, 10000);
SetCookie
var s = new Date(0);
s.setUTCSeconds(exp);
cookie.save(key,value, {expires: s});
您可以使用无状态路由,始终使用您拥有的任何令牌查询API,并处理未经授权的响应?
您将需要在某个时候处理未经授权的响应,以便解决这两种情况
也许包装您的axios
调用将启用此功能?我喜欢这一个,将尝试一下并报告backsure,如果您有任何问题,请告诉我