1
我的目標是從服務中獲得A,然後從A和服務中獲得B.在完成B或發生異常後,該服務也需要關閉。如何減少API設計中的嵌套訂閱(回調地獄)?
我想出了以下API:
Observable<Service> getService();
Observable<Integer> getA(Service service);
Observable<Integer> getB(Integer a, Service service)
而且我可以在下面的使用:
getService().subscribe(s -> {
getA(s).subscribe(a -> {
getB(a, s).subscribe(b -> {
doSomethingWith(b);
s.close();
}, r -> s.close());
}, r->s.close());
});
有嵌套訂閱的3個級別,並關閉該服務的聲明出現在所有3個訂閱()中。
有什麼辦法可以減少訂閱數量(回調)並使代碼更易於閱讀和理解?
謝謝!
使用'flatMap',''''並且理想地重新設計你的服務,使它具有'getA()'和'getB(a)'方法。 –