Redux Thunk - 是否可以取消 setTimeout
Redux Thunk - Is it possible to cancel a setTimeout
我想实现一个通知系统,在用户发出 API 请求后创建一条消息。但是我不想在屏幕上创建多条消息,而是想取消以前的消息并只显示最近的一条。最近了解了 thunk 及其使用,想知道是否可以取消 setTimeout 或是否有更好的方法来实现它。
这是我计划使用的 thunk 消息。
export const startNotification = (message) => {
return dispatch => {
setTimeout(() => {dispatch(notificationMessage(message))}, 5000);
};
};
我不确定解决此问题的方法。我想到的一种方法是更新我的减速器以处理多条消息,但似乎这会使减速器过于复杂。理想情况下,我想取消任何现有的超时,然后再次调用函数。有没有办法实现这个,或者有更好的替代方案来实现我想要实现的目标?
setTimeout()
returns 可以用 clearTimeout()
取消的句柄,所以这是一个选项。
但是,我建议清除减速器中以前的消息。每当您的通知缩减器收到一条新消息时,它就可以摆脱任何其他消息。
如果您最终使用 clearTimeout()
,您可以在 https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout
找到更多相关信息
我想实现一个通知系统,在用户发出 API 请求后创建一条消息。但是我不想在屏幕上创建多条消息,而是想取消以前的消息并只显示最近的一条。最近了解了 thunk 及其使用,想知道是否可以取消 setTimeout 或是否有更好的方法来实现它。
这是我计划使用的 thunk 消息。
export const startNotification = (message) => {
return dispatch => {
setTimeout(() => {dispatch(notificationMessage(message))}, 5000);
};
};
我不确定解决此问题的方法。我想到的一种方法是更新我的减速器以处理多条消息,但似乎这会使减速器过于复杂。理想情况下,我想取消任何现有的超时,然后再次调用函数。有没有办法实现这个,或者有更好的替代方案来实现我想要实现的目标?
setTimeout()
returns 可以用 clearTimeout()
取消的句柄,所以这是一个选项。
但是,我建议清除减速器中以前的消息。每当您的通知缩减器收到一条新消息时,它就可以摆脱任何其他消息。
如果您最终使用 clearTimeout()
,您可以在 https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout