如何取消订阅redux observable中的内部observable?

问题描述 投票:0回答:1

在下面的史诗中,我正在听一个动作$ stream,然后还听一个auth流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'))
      );

它按预期工作,唯一的问题是,如果我通过注销更改auth状态,那么epic将触发signIn()方法,因为useris不再可用。

一旦我登录,我如何停止听authState(app.auth())。取消订阅逻辑在哪里进入史诗?

javascript rxjs rxjs6 redux-observable unsubscribe
1个回答
0
投票

只要您的应用程序正在运行,Epics就会保持活力。

你没有完成它们,你将它们静音。

要使流静音,有很多可能性。例如,windowToggle运算符将允许您通过其他流(例如,其他事件流)使您的observable静音。

例如。你在SIGN_IN - SIGN_OUT序列之间静音史诗。并且在SIGN_OUT - SIGN_IN时期取消静音。

下面是一篇关于different pausing strategies with rxjs的文章。

希望这可以帮助

© www.soinside.com 2019 - 2024. All rights reserved.