Я пытаюсь создать задание cron, которое каждую минуту будет отправлять запрос API для обновления sh сеанса. В запросе отправляю refreshToken
как тело запроса. Токен refre sh, я получаю его из магазина. Ниже - мой запрос.
api.actions. js
export const getAccessToken = () => {
const { refreshToken } = store.getState(); // getting refreshToken from store
return apiDefaultAction({
url: ACCESS_TOKEN_URL,
method: 'POST',
data: {
refresh_token: refreshToken,
},
onSuccess: apiData => {
return {
type: ACCESS_TOKEN_SUCCESS,
payload: { ...apiData },
};
},
});
};
Ответ на запрос - это новые accessToken
и refreshToken
. Редуктор, чем обновляет хранилище новыми accessToken
и refreshToken
:
export default (state = initialState, action) => {
switch (action.type) {
...
case ACCESS_TOKEN_SUCCESS:
return {
...state,
accessToken: action.payload.accessToken,
refreshToken: action.payload.refreshToken,
};
}
};
Я запускаю задание cron, вызывающее этот метод внутри компонента:
import schedule from 'node-schedule';
const RUN_EVERY_MINUTE = '0 * * * * *';
export const initiateAccessToken = () => {
schedule.scheduleJob(RUN_EVERY_MINUTE, () => {
store.dispatch(getAccessToken());
});
};
Однако, когда запросы происходят каждую минуту, refreshToken
всегда одинаков, из первого состояния. Первый запрос получает 200, остальные запросы не передаются, потому что refreshToken
не имеет обновленного значения из хранилища, и срок его действия истек.
Я проверил состояния до и после обновления приставки запроса значения refreshToken
после запроса, но в задании cron всегда используется один и тот же токен. Есть идеи, почему это происходит?
ОБНОВЛЕНИЕ
Я попробовал приведенный ниже пример, и значение кнопки также не меняется: |
import React from 'react';
import schedule from 'node-schedule';
const RUN_EVERY_10_SEC = '0,10 * * * * *';
const TestComponent = () => {
let value = 0;
schedule.scheduleJob(RUN_EVERY_10_SEC, () => {
value += 1;
});
const Button = <button>{value}</button>;
return <div>{Button}</div>;
};
export default TestComponent;