Ich werde verlassen Also dieses als referenz für die zukunft, mit der einfachen lösung habe ich endlich gearbeitet, während ich daran arbeitete, diese frage zu schreiben.
import * as types from './types'
var gpsGetInterval
export function startLocationTracking(time = 1000){
return dispatch => {
gpsGetInterval = setInterval(() =>{
navigator.geolocation.getCurrentPosition(
(position) => {
dispatch({
type: types.NEW_POSITION,
state: JSON.stringify(position)
})
})
}, time)
dispatch({
type: types.START_RUN
})
}
}
export function stopLocationTracking(){
clearInterval(gpsGetInterval)
return {
type: types.STOP_RUN
}
}
So verstehe ich, dass dies nicht skalierbar sein könnte und man könnte epics
unter redux-observable
oder sagas
verwenden müssen. Die Schwierigkeit, die ich in diesem 2 konfrontiert, wo:
redux-observable
klar die wiederkehrendes Ereignis mit war nicht klar (oder sah aus wie eine Abhilfe zu Art es von einer Pause).
- mit
sagas
scheint nicht einfach zu skalieren oder zu aggregieren.
Mit redux-observables
hier ist der Code i Art von bekam, wenn jemand eine gute Idee für diese Art von Fall hat, wird Ich mag davon hören :):
export function inStartRun(action$){
return action$.ofType(types.START_RUN)
.switchMap(function() {
Rx.Observable
.interval(1000)
.do(function() { console.log('tick...') })
.share()
.mapTo({ type: types.STOP_RUN})
});
}
Besonderer Dank Jay Phelps in der Frage, die ich im Repo https://github.com/redux-observable/redux-observable/issues/168
gemacht habe