Как продолжить одно действие Redux в течение определенного времени - PullRequest
0 голосов
/ 03 марта 2019

Я занимаюсь разработкой реагирующего нативного приложения, и оно в сочетании с редуксом.И я успешно внедрил систему купонов.То, чего я хочу достичь, это то, что я хочу продолжить определенное действие в течение по крайней мере 3 секунд.

Вот действие:

export const onAcceptingCoupon = (value) => {
 return(dispatch) => {
    setTimeout(() => {
        dispatch({ type: APPLY_BUTTON_LOADING, payload: true });
        }, 50000);
    dispatch({ type: DISCOUNTED_PRICE, payload: value });
    dispatch({ type: APPLY_BUTTON_LOADING, payload: false });
  }
};

Итак, я использовал реагирующие нативные элементыкнопка.По которому у него есть опция загрузки, которая покажет загрузчик перед кнопкой Текст.Так что проблема в том, что когда я нажимаю на кнопку, вышеупомянутое действие вызывается.

Поскольку необходимые данные уже получены, я просто хочу, чтобы загрузчик был активным в течение 3 секунд.Чтобы пользователь мог понять, что что-то происходит.

Итак, я попытался использовать setTimeout, но ничего не произошло.Он просто перешел к следующей отправке.

Как вручную остановить отправку, чтобы перейти к следующей отправке, до определенных секунд?

1 Ответ

0 голосов
/ 03 марта 2019

Я думаю, что ваш заказ немного испорчен.Сначала вы хотите начать загрузку, а затем через некоторое время остановить загрузчик.Возможно, изменение порядка позволит вам добиться большего успеха.

export const onAcceptingCoupon = (value) => {
 return(dispatch) => {
    // show the loader
    dispatch({ type: APPLY_BUTTON_LOADING, payload: true });

    // put the code that should execute after 50000 inside the setTimeout
    setTimeout(() => {
        dispatch({ type: DISCOUNTED_PRICE, payload: value });
        dispatch({ type: APPLY_BUTTON_LOADING, payload: false });
        }, 50000);
    }
};

setTimeout не блокирует, код, который пишется после того, как он будет выполняться нормально.Это только заставляет код в тайм-ауте выполняться после того, как период времени прошел.

...