Как использовать функцию отмены в примере промежуточного программного обеспечения «timeoutScheduler»? - PullRequest
0 голосов
/ 05 июля 2018

Когда я реализую MW, он прекрасно работает, но как мне вызвать функцию «отмена» если я хочу очистить тайм-аут? Вот код: ( взято из промежуточного ПО Redux )

   /**
 * Schedules actions with { meta: { delay: N } } to be delayed by N milliseconds.
 * Makes `dispatch` return a function to cancel the timeout in this case.
 */
const timeoutScheduler = store => next => action => {
  if (!action.meta || !action.meta.delay) {
    return next(action)
  }
​
  const timeoutId = setTimeout(
    () => next(action),
    action.meta.delay
  )
​
  return function cancel() {
    clearTimeout(timeoutId)
  }
}

1 Ответ

0 голосов
/ 05 июля 2018

При условии, что все остальные промежуточные программы в цепочке правильно выполняют return next(action), тогда ваш вызов dispatch() вернет эту функцию cancel. Например:

const cancel = store.dispatch({type : "INCREMENT", meta : {delay : 1000}});

// kill it off
cancel();

Или аналогично создателю связанных действий в компоненте React:

// assume we have an action creator like this passed to connect():
function incrementWithDelay() {
    return {type : "INCREMENT", meta : {delay : 1000}};
}


const cancel = this.props.incrementWithDelay();
cancel();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...