Как обновить токен доступа для длительного процесса с помощью Javascript и Node.js.
В этом разделе мы смоделируем, как обновить токен, полученный из внешнего API, на основе его даты истечения срока действия, чтобы избежать ошибки недопустимого токена.
Перво-наперво убедитесь, что вы Node.jsустановили его на свой компьютер.
Затем давайте создадим наш файл js, например: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');
})();
Таким образом, внутри цикла For перед вызовом delayфункции мы проверяем действительность токена, сравнивая его значение истечения срока действия с подструктурой текущего момента, возвращаемой функцией, Date.now()и временем последнего получения действительного токена.
Если токен все еще действителен, мы проигнорируем условие if и продолжим наш процесс, в противном случае мы создадим новый действительный токен, чтобы избежать какой-либо ошибки авторизации.
Надеюсь это поможет :)

![В любом случае, что такое связанный список? [Часть 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































