あなたは.ignoreElements()
RxJS演算子
action$.ofType(type)
.do(() => resolve())
.ignoreElements();
これを行うための別の方法を使用することにより、観察チェーンから任意のnext'd値を捨てることができます(これ以上右:ここ
は私のコードませんまたは間違っている)は、ただ購読する匿名Observableを作成することです。
const waitForResultEpic = action$ => new Observable(observer =>
action$.ofType(type)
.subscribe(() => resolve())
);
これは私たちが作成したサブスクリプションを暗黙的に返しているため、rootEpicのライフサイクルにも添付されています。我々はobserver.next()
を決して呼ぶことはないので、この叙事詩はいかなる値も出さない。ちょうどignoreElements()
のように。
あなたは求めていませんでしたが、あなたは最終的にtype
変数に一致すること、着信アクションのために聞いて、あなたの叙事詩は永遠に実行されることがあります。 を一度とマッチさせたい場合、これはあなたが望むものではないかもしれません。
これは、.take(1)
演算子を使用して実行できます。
const waitForResult = action$ =>
action$.ofType(type)
.take(1)
.do(() => resolve())
.ignoreElements();
それとも
const waitForResult = action$ => new Observable(observer =>
action$.ofType(type)
.take(1)
.subscribe({
next:() => resolve(),
error: err => observer.error(err),
complete:() => observer.complete()
})
);
これが唯一のアプリケーションの人生に一度マッチします - 一度それが再びそれを行うことはありません受け取りました。