次のエピックでは、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())
サインインした後、聞くのをやめるにはどうすればよいですか。購読解除ロジックはエピックのどこにありますか?
エピックは、アプリが実行されている限り存続することになっています。
あなたはそれらを完了しません、あなたはそれらをミュートします。
ストリームをミュートするには、多くの可能性があります。たとえば、windowToggle
演算子を使用すると、他のイベントのストリームなど、別のストリームによってオブザーバブルをミュートできます。
例えば、あなたはで-間の叙事詩しばらくミュートSIGN_IN
-SIGN_OUT
シーケンス。そして、ミュートを解除しますSIGN_OUT
—SIGN_IN
期間。
これは、rxjsを使用したさまざまな一時停止戦略に関する記事です。
お役に立てれば
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加