Ich versuche RxJava zu verwenden, um eine Liste von Anfragen zu verketten, aber ich kann nicht herausfinden, wie man es richtig macht. Ich habe eine Liste (LIST_A), die ich durchlaufen und ihre Daten an den ersten Dienst (SERVICE_A) senden möchte. Sobald ich die Antwort bekomme, muss ich eine neue Liste (LIST_B) an einen zweiten Webservice (SERVICE_B) senden. Fluss: -> LOOP (LIST_A) SEND ITEM_A - >> nach dieser ITEM_A SENDING (braucht es die zweite LOOP (LIST_B) zu starten und alle Einzelteile senden) - END LOOPWie benutze ich Observables, RxJava und Android um auf ein Webapi zuzugreifen?
dass das, was ist ich habe bisher getan:
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);
Jeder kann dabei helfen sie mir bitte, verbrachte ich ein paar Tage versuchen, zu verstehen, wie RxJava zu verwenden und Retrofit aber es ist härter als ich erwartet hatte.
So ist es nicht klar, was Sie tun möchten; Welche der folgenden benötigen Sie? 'für (A in Liste_a) {clientA.sendA}; für (B in list_B) {clientB.sendB}; 'oder' für (A in list_a) {clientA.sendA; für (B in Liste_B) {clientB.sendB}; }; '? –
Die zweite Option, aber es sendB muss erst ausgeführt werden, nachdem sendA die Antwort erhalten. Danke, dass du Tassos Bassoukos helfen willst, ich weiß das wirklich zu schätzen! –