gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 23:55:06 24 4
gpt4 key购买 nike

在下面的史诗中,我正在监听一个 action$ 流,然后也监听一个 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'))
);

它按预期工作,唯一的问题是,如果我通过注销来更改身份验证状态,那么史诗会触发 signIn() 方法,因为 user 不再可用。

登录后如何停止监听 authState(app.auth())。史诗中的取消订阅逻辑在哪里?

最佳答案

只要您的应用正在运行,Epic 就应该保持活力。

您没有完成它们,而是将它们静音

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

例如您可以在 SIGN_IN - SIGN_OUT 序列之间将史诗静音。并在 SIGN_OUT - SIGN_IN 期间取消静音。

这是一篇关于 different pausing strategies with rxjs 的文章.

希望这有帮助

关于javascript - 如何取消订阅 redux observable 中的内部 observable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55433371/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com