Come aggiornare il token di accesso per un processo lungo utilizzando Javascript e Node.js.
In questo argomento, simuleremo come aggiornare il token recuperato dall'API esterna, in base alla data di scadenza per evitare errori di token non validi.
Per prima cosa, assicurati di averlo Node.jsinstallato sulla tua macchina.
Quindi, creiamo il nostro file js, ad esempio: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');
})();
Quindi, all'interno del ciclo For prima di chiamare la delayfunzione, verifichiamo la validità del token confrontando il suo valore di scadenza con la substruction del momento corrente restituito da Date.now()e l'ultima volta che abbiamo ottenuto un token valido.
Se il token è ancora valido, ignoreremo la condizione if e continueremo il nostro processo, altrimenti genereremo un nuovo token valido per evitare qualsiasi tipo di errore di autorizzazione.
Spero questo sia di aiuto :)

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































