reactjs - Redux Thunk - 是否可以取消 setTimeout
问题描述
我想实现一个通知系统,在用户发出 API 请求后创建一条消息。但是我不想在屏幕上创建多条消息,并且想取消以前的消息,只显示最近的一条。最近了解了 thunk 及其使用,想知道是否可以取消 setTimeout 或者是否有更好的方法来实现它。
这是我计划使用的 thunk 消息。
export const startNotification = (message) => {
return dispatch => {
setTimeout(() => {dispatch(notificationMessage(message))}, 5000);
};
};
我不确定解决此问题的方法。我正在考虑的一种方法是更新我的减速器以处理多条消息,但似乎这会使减速器过于复杂。理想情况下,我想取消任何现有的超时,然后再次调用函数。有没有办法实现这一点,或者有没有更好的替代我想要实现的目标?
解决方案
setTimeout()
返回一个可以取消的句柄clearTimeout()
,所以这是一种选择。
但是,我建议清除减速器中以前的消息。每当您的通知缩减程序收到一条新消息时,它就可以摆脱任何其他消息。
如果您最终使用了,您可以在https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeoutclearTimeout()
找到有关它的更多信息
推荐阅读
- asp.net-core - DotNet Core App 2.1 - 无法添加 DLL 引用
- html - 如何更改此 svg 中复选标记的颜色?
- javascript - 如何从jquery动态地在textarea中插入文本
- eval - 如何使函数可用于 ClojureScript 的 eval?
- python - PYSPARK - 预测的目标标签缺少一类 - 逻辑回归
- javascript - 如何使用 VueJS 防止数字输入
- android - Android 无法构建:在根项目 'android' 中找不到任务 'assemble'
- active-directory - 唯一的 x500 对象 ID 创建
- javascript - 在与 React.DOM 和我的组件之一相关的 React 应用程序中不断出现渲染错误
- javascript - 用对象实例化变量会将对象变成函数,然后对象数据成员返回 undefined