ich einen Timer für eine Stoppuhr starten Komponente reagieren, wenn eine Aktion START ausgelöst wird:eine Saga abbrechen, wenn eine Aktion mit redux-Saga versandt
import 'babel-polyfill'
import { call, put } from 'redux-saga/effects'
import { delay, takeEvery, takeLatest } from 'redux-saga'
import { tick, START, TICK, STOP } from './actions'
const ONE_SECOND = 1000
export function * timerTickWorkerSaga (getState) {
yield call(delay, ONE_SECOND)
yield put(tick())
}
export default function * timerTickSaga() {
yield* takeEvery([START, TICK], timerTickWorkerSaga)
yield* takeLatest(STOP, cancel(timerTickWorkerSaga))
}
/*
The saga should start when either a START or a TICK is dispatched
The saga should stop running when a stop is dispatched
*/
ich Schwierigkeiten haben, die Saga zu stoppen, wenn die STOP
Aktion ausgelöst wird von meiner Komponente. Ich habe versucht, mit cancel
und cancelled
Effekten aus meiner Arbeiter Saga:
if(yield(take(STOP)) {
yield cancel(timerTickWorkerSaga)
}
sowie den Ansatz in dem ersten Codeblock, in dem ich versuche, und die Sage von der Beobachtung Dienst zu beenden.
Wie Sie vermutet hätte, ich habe ES6 Generatoren vernachlässigt, Danke für die Antwort und die nützlichen Ressourcen. – vamsiampolu