Comment actualiser le jeton d'accès pour un long processus à l'aide de Javascript & Node.js.
Dans cette rubrique, nous allons simuler comment actualiser le jeton récupéré à partir de l'API externe, en fonction de sa date d'expiration pour éviter une erreur de jeton non valide.
Tout d'abord, assurez-vous que vous l'avez Node.jsinstallé sur votre machine.
Ensuite, créons notre fichier js, par exemple :process.js
/**
* Make token
* @param {number} length Token length
* @param {number} expires_in Token expiration in seconds, default: 5 secs
*
* @return {Array}
*/
const makeToken = (length, expires_in = 5) => {
let token = '';
const characters =
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
for (var i = 0; i < length; i++) {
token += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return [token, expires_in];
};
/**
* Utility to simulate asynchronous call
* @param {number} milliseconds Time to wait in ms
*
* @return {Promise}
*/
const delay = (milliseconds) =>
new Promise((resolve) => setTimeout(resolve, milliseconds));
/** Process */
(async () => {
const data = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
const processStartDate = Date.now();
let renewTokenDate = processStartDate;
let [token, expires_in] = makeToken(40);
let tokenIsInvalid = expires_in - 1 <= (Date.now() - renewTokenDate) / 1000;
await delay(1000);
console.log('token >', token);
for (const row of data) {
if (tokenIsInvalid && token) {
console.log(`token expired > ${token}`, tokenIsInvalid);
renewTokenDate = Date.now();
[token, expires_in] = makeToken(40);
await delay(1000);
console.log('got new token', token);
}
console.info('token is valid >', !(tokenIsInvalid && token));
console.log('row value >', row);
await delay(1000);
console.log('DATA FETCHED for >', row);
}
const processEndDate = Date.now();
console.log('DONE in ', (processEndDate - processStartDate) / 1000, 's');
})();
Ainsi, à l'intérieur de la boucle For avant d'appeler delayla fonction, nous vérifions la validité du jeton en comparant sa valeur d'expiration avec la substruction du moment actuel renvoyé par Date.now()et la dernière fois que nous avons obtenu un jeton valide.
Si le jeton est toujours valide, nous ignorerons la condition if et continuerons notre processus, sinon nous générerons un nouveau jeton valide pour éviter tout type d'erreur d'autorisation.
J'espère que cela t'aides :)
![Qu'est-ce qu'une liste liée, de toute façon? [Partie 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































