2017-10-19 4 views
1

Rex에서 redux-observable로 작업하기 시작했으며 Interval API 요청으로 멈추었습니다.Redux-Observable의 Interval API 호출

그것은 오직 하나의 요청에 대해, 좋은 작품 내 서사시에 대한 코드입니다 : 이제

const fetchPointValue = (action$) => 
 
    action$ 
 
    .ofType(actionTypes.REQUEST_POINT_VALUE) 
 
    .mergeMap(action => 
 
      ajax.getJSON(`${API_SERVER_URL}/point/value/${action.payload.id}`) 
 
      .map(response => receivePointValue(action.payload.id, response)) 
 
      .startWith(fetchingPointValue(action.payload.id)) 
 
    )

, 나는 간격을 수정해야 - 액션 REQUEST_POINT_VALUE가 있다면 불려, 나는 ~30 초마다 값을 요청해야합니다. REQUEST_POINT_CANCEL 조치. .takeUntil ("REQUEST_POINT_CANCEL"). 간격 (5000)을 사용하여 문제를 해결할 수 있지만 가능한 모든 조합을 시도했지만 여전히 작동중인 버전에 도달 할 수 없습니다.

답변

2

예, .interval.takeUntill를 사용하여이를 얻을 수 있습니다

action$ 
    .ofType(actionTypes.REQUEST_POINT_VALUE) 
    .mergeMap(action => 
    Observable 
     .interval(5000) 
     .switchMap(/* make request here */) 
     .takeUntil(action$.ofType(actionTypes.REQUEST_POINT_CANCEL)) 
) 

여기에 문서와 예를 살펴 보자 - 3.1 Cancellation

+2

멋진 대답을! 또한 : 첫 번째 요청을 처음 5000 밀리 초를 기다리지 않고 바로 시작하려면 'Observable.interval (5000) .startWith (0)'를 사용하면됩니다. – jayphelps

+0

여러분, 고맙습니다. – ELP24