なぜsubscribeは実行されないのか?(RxJava)
231日目
Azure Storage SDK for JavaはRxJavaに対応してます。RxJava(リアクティブプログラミング)なんで初めて聞いた言葉で何もわからないままサンプルを試してみました。
で、サンプルが動かない。厳密に言うとサンプルをベースに最小限のプログラムを作成したものを試してました。なぜだ?とずーっと考えてましたが以下の記事を見つけて解決しました。
Thus when your main thread finishes, those threads are terminated before processing your observable.
原因は非同期のスレッドが処理している間にメインスレッドが終了してしまっていた、ということでした。
非同期のスレッドが終了させるためにメインスレッドでThread.sleep()を入れたらsubscribeが実行されました。
サンプルはwhile (true) でループさせてるんですが、僕が作ったスクリプトはそのループを取り除いてました。実はこれが原因だったとはね・・・。
エラーも何もでないので相当悩みました・・・
RxJavaリアクティブプログラミング (CodeZine BOOKS)
- 作者: 須田智之
- 出版社/メーカー: 翔泳社
- 発売日: 2017/02/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (1件) を見る