Redux Thunk-是否可以取消setTimeout

时间:2019-07-12 15:17:22

标签: reactjs redux react-redux redux-thunk

我想实现一个通知系统,该通知系统在用户发出API请求后创建一条消息。但是,我不想在屏幕上创建多个消息,并且想要取消以前的消息,而只显示最新的消息。最近了解了thunk及其用法,并想知道是否可以取消setTimeout或有更好的方法来实现它。

这是我计划使用的粗俗消息。

export const startNotification = (message) => {
  return dispatch => {
    setTimeout(() => {dispatch(notificationMessage(message))}, 5000);
  };
};

我不确定解决此问题的方法。我想到的一种方法是更新我的reducer以处理多条消息,但这似乎会使reducer过于复杂。理想情况下,我想取消所有现有的超时,然后再次调用函数。有没有一种方法可以实现这一目标,或者有比我想要实现的更好的选择?

1 个答案:

答案 0 :(得分:0)

setTimeout()返回一个可以用clearTimeout()取消的句柄,所以这是一个选择。

但是,我建议清除reducer中的先前消息。每当您的Notification Reducer收到新消息时,它都可以摆脱其他任何消息。

如果您确实使用了clearTimeout(),则可以在https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/clearTimeout上找到有关它的更多信息