2017-12-06 5 views
0

チェーンが完全に完了しているときにのみ、私は観察可能なチェーンで働いていると私は、次またはエラー値に興味がないんです。私はonCompleteコールバックを提供することができるので、subscribeメソッドを利用し、次とエラーのために2つのnoopsを供給するのは間違っていると感じます。例についてはObservable onCompleteハンドラを提供するための方法がありますか?

:私が好きな何

let isRunning = true; 

Observable.from([1000, 2000, 3000]) 
    .concatMap(value => Observable.timer(value) 
    .subscribe(
    () => {}, 
    () => {}, 
    () => isRunning = false; 
); 

この

let isRunning = true; 

Observable.from([1000, 2000, 3000]) 
    .concatMap(value => Observable.timer(value) 
    .onComplete(() => isRunning = false); 
+0

subscribe()は1つの関数で呼び出すことができ、それは機能します。関数自体は単項式ではありませんが、それは不平を言っていません。 – Burimi

+0

@Burimiしかし、それは次のハンドラであり、完全なハンドラではありません。 –

+0

ああ、私は忘れました。あなたは最初の2つの引数でundefinedを渡すことができます。 – Burimi

答えて

1

最短形式はオブザーバオブジェクトを使用します。

obs.subscribe({ complete:() => isRunning = false });

+0

これはヌル引数を使用するよりも1文字長いため、客観的に「最短」ではありません。 –

2

のようなものではありません、近道はありません。ただし、空の関数の代わりにnullを渡すことができます。

obs$.subscribe(null, null,() => this.isRunning = false); 

あなたがトリックのいくつかの種類をしたい場合、あなたはまた、例えば、あなたが完了ハンドラ内の最後の放出された値にアクセスする必要がある、場合、これは理にかなって

obs$.last().subscribe(() => this.isRunning = false); 

を行うことができます。

+0

未定義も同様です。 – Burimi

関連する問題