/ / obserwowalne wysyłanie równolegle w oparciu o warunek i czas odbicia - rxjs, redux-observable

obserwowalne do wysyłania równolegle w oparciu o stan i czas odbicia - rxjs, obserwowane przez redux

Gram z redux-observable, aby wywołać dwadziałania. Pierwsza akcja była oparta na warunku, gdy jest prawdziwa, a druga akcja powinna zostać uruchomiona za pomocą debounce po 500 sekundach. Oba obserwowalne mogą być uruchamiane równolegle i nie zależą od siebie.

Do tej pory wymyśliłem, co nie działa.

export const updateContent = (content$, { getState }) => {
return content$.ofType(actionTypes.REQ_CHANGE_EDIT)
.flatMap(action =>
Observable.forkJoin(
Observable.if(() => isChanged(getState()),
Observable.of(({ type: actionTypes.CHANGE_EDIT, changed: true }))),
Observable.of({ type: actionTypes.CACHE_CONTENT, isCached: false }).debounceTime(500),
));

};

Odpowiedzi:

0 dla odpowiedzi № 1

spróbuj użyć CombineLatest zamiast Forkjoin i wymuś emitowanie wartości początkowej z operatora .if

export const updateContent = (content$, { getState }) => {
return content$.ofType(actionTypes.REQ_CHANGE_EDIT)
.flatMap(action =>
Observable.combineLatest(
Observable.if(() => isChanged(getState()),
Observable.of(({ type: actionTypes.CHANGE_EDIT, changed: true }))).startWith(null),
Observable.of({ type: actionTypes.CACHE_CONTENT, isCached: false }).debounceTime(500),
));

};