Reactjs 经过一段时间后发送操作

Reactjs 经过一段时间后发送操作,reactjs,redux,react-redux,Reactjs,Redux,React Redux,所以我第一次玩React和Redux。在我的应用程序中,我使用第三方API获取数据等等,在这方面一切都很好。然而,像大多数受保护的API一样,我需要获取一个短期令牌来针对API发出请求,我想在某种事件上设置一个计时器,以便在后台刷新令牌。最好的方法是什么?令牌有一个到期日,因此我可以设置一个计时器,在令牌到期前几分钟获取一个新令牌。我提出的第一个解决方案是嵌套承诺,但这可能不是最好的解决方案 首先请求您的令牌,然后在回调中请求真实数据 使用axios时,会出现如下情况: axios.get('/

所以我第一次玩React和Redux。在我的应用程序中,我使用第三方API获取数据等等,在这方面一切都很好。然而,像大多数受保护的API一样,我需要获取一个短期令牌来针对API发出请求,我想在某种事件上设置一个计时器,以便在后台刷新令牌。最好的方法是什么?令牌有一个到期日,因此我可以设置一个计时器,在令牌到期前几分钟获取一个新令牌。

我提出的第一个解决方案是嵌套承诺,但这可能不是最好的解决方案

首先请求您的令牌,然后在
回调中请求真实数据

使用
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,如果您有任何问题,请告诉我