Я хочу выполнять вызов API токена обновления каждые 60 минут

В настоящее время у меня есть вызов API токена обновления каждые 60 минут,

Вот мое состояние:

 **const expires_in = 3600 //This is 3600s comes from auth api 
if (refreshToken && expires_in * 1000 > Date.now() + 3600000) {
// RefreshToken Function
else {
        console.info("accessToken not expired yet");
    }**

Это условие работает неправильно. Это условие вызывает функцию RefreshToken при каждой перезагрузке, но я хочу вызывать ее каждые 60 минут.

Точно мое условие: звонить каждые 60 минут.

какой http-пакет вы используете? Аксиос или выборка?

Akinniyi Akinbode Bolade 11.07.2024 05:17

Чтобы это работало, вам также необходимо знать дату и время, когда токен был выпущен.

James 11.07.2024 11:55

В настоящее время я использую вызов вызова

Waqas Ahmed 11.07.2024 12:58
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
3
73
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Не можете ли вы просто использовать функцию сна или что-то в этом роде?

expires_in * 1000 = 3600000,

Date.now() + 3600000 = 1720672843350 ,

Таким образом, это условие никогда не может быть истинным. Также ваш вариант должен выглядеть так:

    const expires_in = 3600 //This is 3600s comes from auth api 
     if ((refreshToken) && (expires_in * 1000 > Date.now() + 3600000)) {
   // RefreshToken Function

     }else {

    console.info("accessToken not expired yet");
  }

В этом случае вы ожидаете, что оба условия будут истинными для выполнения функции. Но вот как я вам сказал: Первое условие никогда не может быть больше второго, а это значит, что вы никогда не сможете выполнить функцию в соответствии с вашим условием. Возможно, вы хотели сказать:

    const expires_in = 3600 //This is 3600s comes from auth api 
 if ((refreshToken) && (expires_in * 1000 + Date.now() > Date.now() + 3600000)) 
{
  // RefreshToken Function

 }else {

console.info("accessToken not expired yet");

}

Мой совет — сначала исправить математику и выяснить, каким именно должно быть условие.

Ваше условие — show всегда ложно.

Waqas Ahmed 11.07.2024 07:49
Ответ принят как подходящий

Сначала сохраните эту дату всякий раз, когда вы получаете новый токен доступа.

// This snippet adds 3600 seconds to the current date
const accessTokenTime = new Date();
accessTokenTime.setSeconds(accessTokenTime.getSeconds() + expires_in);

После этого вы можете сравнить две даты. Если accessTokenTime меньше текущего времени, это означает, что 60 минут для accessToken завершены.

if (refreshToken && (accessTokenTime < Date.now()) {
    // RefreshToken Function
} else {
   console.info("accessToken not expired yet");
}

Пока не работает. Я хочу вызвать API RefreshToken, когда срок действия токена доступа истечет, а время истечения срока действия моего токена доступа составляет один час (60 минут).

Waqas Ahmed 12.07.2024 04:40

Вы добавили первый фрагмент, хотя вначале получили accessToken? Можете ли вы указать значение журнала accessTokenTimeDate.now()?

Rajkumar 12.07.2024 11:58

Вот объект, который я получаю после успешного входа в систему. { "access_token": "pA6StAHCIW2UdsrkghrMJjpOdHsjkfwJeyRvXviSY", "expires_in": 3600, "token_type": "Bearer", "scope": "каналы Channel_contacts файлы журналы каналов_сообщений", "refresh_token": "78KOriUIAofHGs2LO3bfdHc2L HsdjghjkgwexCis" } Пожалуйста, подскажите, как мне справиться мое состояние токена обновления.

Waqas Ahmed 13.07.2024 06:09

Просто добавьте первый фрагмент после входа в систему, где вы получите этот объект: { "access_token": "pA6StAHCIW2UdsrkghrMJjpOdHsjkfwJeyRvXviSY", "expires_in": 3600, "token_type": "Bearer", "scope": "каналы Channel_contacts файлы журналы каналов_сообщений", " обновить_токен": "78KOriUIAofHGs2LO3bfdHc2LHsdjghjkgwexCis" } И используйте accessTokenTime, где вам нужно проверить, истек срок действия токена доступа или нет.

Rajkumar 16.07.2024 12:12

Другие вопросы по теме