Как отписаться от внутренних наблюдаемых в наблюдаемой редуксе? - PullRequest
0 голосов
/ 30 марта 2019

В следующем эпосе я слушаю поток действия $, а затем также слушаю поток авторизации authState(app.auth())

export const fetchAuthStatus = action$ =>
      action$.pipe(
        ofType(AUTH_STATUS_CHECKED),
        switchMap(() => authState(app.auth())),
        switchMap(user =>
          user
            ? of({ type: 'SIGNED_IN', payload: user })
            : signIn(googleAuthProvider)
        ),
        catchError(error => console.log('problems signing in'))
      );

Работает как положено, единственная проблема в том, что если я изменю статус авторизации, выйдя из системы, то эпический вызовет метод signIn(), поскольку user больше не доступен.

Как мне перестать слушать authState(app.auth()) после того, как я вошел в систему. Куда логика отписки уходит в эпос?

1 Ответ

0 голосов
/ 30 марта 2019

Эпосы должны оставаться в живых до тех пор, пока ваше приложение работает.

Вы не завершаете их, вы отключаете их .

Для отключения потока существует множество возможностей. Например, оператор windowToggle позволит вам отключить наблюдаемое другими потоками, скажем, потоками других событий.

например. Вы заглушаете эпопею в промежутке между SIGN_IN - SIGN_OUT. И включить звук в период SIGN_OUT - SIGN_IN.

Вот статья о различных стратегиях приостановки с rxjs .

Надеюсь, это поможет

...