0
私は、ダウンロードのパーセンテージをソケットからフロントエンドに送るダウンローダを持っています。JavaRx:サブスクライバの反応なしにobservableのデフォルト値を設定できますか?
DownloadStream downloadStream = SomeService.downloadStream(someFile);
Long total = downloadStream.totalSize();
Subject totalDownloaded = new BehaviorSubject.createDefault(0);
Disposable downloadSubscriber = totalDownloaded.subscribe(downloaded -> {
Message message = new Message(downloaded, total);
send(message);
});
Long downloaded = downloadStream.stream(); //stream() is bulk read/write.
while(downloaded != -1L) {
chunk = downloadStream.stream();
totalDownloaded.onNext(totalDownloaded.value + chunk);
}
ただし、defaultValue = 0はsubscribeのlambdaを呼び出します。副作用なしにデフォルト値を定義するにはどうすればよいですか?または、長い間観測可能な解決策がいくつかありますか?助けてください...