Cómo actualizar el token de acceso para un proceso largo usando Javascript y Node.js.
En este tema, simularemos cómo actualizar el token recuperado de una API externa, en función de su fecha de vencimiento para evitar un error de token no válido.
Lo primero es lo primero, asegúrese de haberlo Node.jsinstalado en su máquina.
Luego, creemos nuestro archivo js, por ejemplo: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');
})();
Entonces, dentro del bucle For antes de llamar a delayla función, verificamos la validez del token comparando su valor de vencimiento con la substruction del momento actual devuelto Date.now()y la última vez que obtuvimos un token válido.
Si el token sigue siendo válido, ignoraremos la condición if y continuaremos nuestro proceso, de lo contrario generaremos un nuevo token válido para evitar cualquier tipo de error de autorización.
Espero que esto ayude :)

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































