javascript - 如何在特定时间继续单个 Redux Actions
问题描述
我一直在开发 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 });
}
};
所以,我一直在使用反应原生元素按钮。它有一个加载选项,它将在按钮文本前面显示一个加载器。所以问题是当我按下上面提到的按钮时,就会调用动作。
由于已经获取了我需要的数据,我只想让加载程序保持活动状态至少 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
没有阻塞,在它之后编写的代码将正常执行。它只是导致超时中的代码在时间段过去后执行。
推荐阅读
- javascript - 使用 Select2 优化搜索中的数据加载
- regex - 正则表达式 - 匹配多个不跟数值的特定字符实例
- java - 我无法从 servlet 重定向到 jsp 文件。它没有重定向到实际页面?
- asp.net - 编辑代码时,有什么方法可以防止用户会话在 ASP.NET WebForms 中过期?
- azure - 使用服务主体访问 Azure Blob 存储
- javascript - 用一个标识符遍历一个JSON对象,得到一个带有该标识符的特定值
- php - PDOStatement 的 errorInfo 不会跨查询重置
- python - Python中的并发,多进程比单进程慢
- c# - 在 json Object 中创建 json Object 并返回给 Ajax
- matplotlib - 如何在 matplotlib / seaborn 子图中使用相同的调色板?