私は実際のサブスクリプションがある場合にのみ高価な操作を開始するだろうコールドオブザーバブルを作成したいと思います。 ReplaySubject
は、実際のサブスクリプションが行われたときに高価なバックグラウンド操作を開始できる必要があり、オブザーバブルの作成時には必要でない部分を除いてうまく収まります。そうする方法はありますか?いくつかの種類のonSubscribed { ... }
メソッド。`ReplaySubject`を購読中にクロージャを実行させることは可能ですか?
let observable = Observable.of(1, 2)
.doOn(onSubscribe: { _ in
expensiveOperation()
})
observable
.subscribeNext { e in
print(e)
}
Observable
接続を作成し、doOn(onSubscribe:)
分離:
Observable
およびサブスクリプションの間でだ
doOn(onSubscribe:)
に高価な操作を追加
:ここ
observableで 'doOn'を使用できませんでしたか? http://reactivex.io/documentation/operators/do.html – sbarow
'doOn'は、オブザーバブルがすでに暑いとき、つまりイベントを生成するときにトリガされます。イベントを生成するために 'doOn'を使用すると、それはうまくいかないでしょう。 – courteouselk
そうですが、それはあなたの質問が求めていることです。サブスクリプション時にのみ操作を実行します。あなたの寒い目に見えるものが始まっているとき。彼はあなただけが 'doOn'を使うのではなく、' doOn'を使い、次に 'subscribe'を使うことを提案していました。 – solidcell