23

Observableがあるとしましょう:

var observable = Rx.Observable
    .fromEvent(document.getElementById('emitter'), 'click');

どうすればそれを完全にすることができますか (サブスクライブされたすべてのオブザーバーのonCompleteイベントをトリガーするものは何ですか) ?

4

4 に答える 4

38

この現在の形では、できません。オブザーバブルは、完了しないソースから派生しているため、それ自体は完了できません。できることは、このソースを完全な条件で拡張することです。これは次のように機能します。

var end$ = new Rx.Subject();
var observable = Rx.Observable
    .fromEvent(document.getElementById('emitter'), 'click')
    .takeUntil(end$);

終わりたい時observableはするend$.onNext("anything you want here");。それは、終了イベントがあなたによって生成された場合です。これがそのイベント (キー押下など) を生成する別のソースである場合、そのソースから派生したオブザーバブルを の引数として直接配置できますtakeUntil

ドキュメンテーション:

于 2015-12-04T21:00:39.440 に答える