-1
我想使用RxJava來鏈接請求列表,但我無法弄清楚如何正確地做到這一點。 我有一個列表(LIST_A),我想迭代並將其數據發送到第一個服務(SERVICE_A)。只要我得到響應,我必須發送一個新列表(LIST_B)到第二個Web服務(SERVICE_B)。 流量: - > LOOP(LIST_A) SEND ITEM_A - >> 後發送此ITEM_A(它需要啓動第二環(LIST_B)和發送的所有項目) - END LOOP如何使用Observables,RxJava和Android來訪問Webapi?
那是什麼到目前爲止,我已經做了:
private static <T> Observable<T> makeObservable(final Callable<T> func) {
return Observable.create(
new Observable.OnSubscribe<T>() {
@Override
public void call(Subscriber<? super T> subscriber) {
try {
subscriber.onNext(func.call());
} catch(Exception ex) {
Log.e("OP_DAO", "Error reading from the database", ex);
}
}
});
}
public Observable<List<VisitInfo>> getVisitObservable() {
return makeObservable(this.getVisit())
.subscribeOn(Schedulers.computation()) ;
}
public Callable<List<VisitInfo>> getVisit() {
return new Callable<List<PesquisaInfo>>() {
@Override
public List<VisitInfo> call() throws Exception {
List<VisitInfo> list = new ArrayList<VisitInfo>();
// 1. build the query
String query = "SELECT * FROM "
+ VISIT ;
// 2. get reference to writable DB
try {
Cursor cursor = getMyWritableDatabase().rawQuery(query, null);
// 3. go over each row, build book and add it to list
if (cursor.moveToFirst()) {
do {
VisitInfo v = new VisitInfo();
...
list.add(v);
} while (cursor.moveToNext());
closeCursor(cursor);
}
return list;
} finally {
closeDatabase();
}
}
};
}
Client client = new ServiceGenerator().createService(Client.class);
Call<List<WS01>> wsServiceCall = client.GetData(user);
Call<List<WS02>> wsService2Call = client.GetData2(dependent of first call);
任何人都可以幫我請,我花了幾天試圖瞭解如何使用RxJava和改造,但它正在比我預料的要難。
所以,目前還不清楚你想做什麼;你需要以下哪一項? (for list_a中的A){clientA.sendA}; for(B in list_B){clientB.sendB};'或'for(A in list_a){clientA.sendA; for(B in list_B){clientB.sendB}; };'? –
第二個選項,但sendB只有在sendA收到答案後才需要執行。 謝謝你試圖幫助Tassos Bassoukos,我真的很感激! –