当前位置: 代码迷 >> JavaScript >> 如何在特定时间继续执行单个Redux操作
  详细解决方案

如何在特定时间继续执行单个Redux操作

热度:53   发布时间:2023-06-07 11:43:59.0

我一直在开发react native应用程序,并将其与redux结合使用。 而且我已经成功地实施了优惠券系统。 我想要实现的是,我至少要继续进行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 });
  }
};

因此,我一直在使用react native elements按钮。 通过它有一个加载选项,它将在按钮Text前面显示一个加载器。 所以问题是当我按下上面提到的动作的按钮时。

由于所需的数据已经获取,因此我只想让加载器处于活动状态至少3秒钟。 这样,用户可以了解正在发生的事情。

因此,我尝试使用setTimeout,但是什么也没发生。 它只是移到下一个调度。

如何手动停止调度以转移到下一个调度,直到某个秒?

我认为您的订单有些混乱。 您要先开始加载,然后在一段时间后停止加载器。 也许将顺序更改为此将使您获得更大的成功。

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没有阻塞,在它写入之后将正常执行的代码。 它只是使超时时间内的代码在该时间段过去之后执行。