问题描述
我一直在开发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,但是什么也没发生。 它只是移到下一个调度。
如何手动停止调度以转移到下一个调度,直到某个秒?
1楼
我认为您的订单有些混乱。 您要先开始加载,然后在一段时间后停止加载器。 也许将顺序更改为此将使您获得更大的成功。
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
没有阻塞,在它写入之后将正常执行的代码。
它只是使超时时间内的代码在该时间段过去之后执行。