我正在應用程序中,而不是轉換其他對象中的對象的一個列表,爲此,我使用Rx Java的Observable。RxJava - Observable:一個可觀察比返回其他Observable
我有兩種方法,一種是一個適配器(新澤西門面),其具有一個ASYN服務和該方法中從其他服務一個可觀察消耗。
我需要消耗可觀察和處理每一個項目時,該上課完整的我NEDD創建處理的所有項目的一個列表,並返回一個新的可觀察其中E是處理的每個項目的列表。
要處理每個項目我使用flatMap操作符,但我不知道如何創建一個新的觀察者,其中一個類型diferente由示例flatmap運算符處理的所有每個列表。
任何想法?
感謝
更新:
此代碼,過程中的每個元素和具有返回其他可觀察的,但我不知道這是否是做得很好。
@Override
public Observable<ArrayList> getGeoJson2() {
WKTReader2 reader2 = new WKTReader2();
WKBReader wkbReader = new WKBReader();
ArrayList featureCollection = new ArrayList();
Subject<ArrayList,ArrayList> subject = PublishSubject.create();
manzanaRepository.getManzanas().map(new Func1<Manzana, SimpleFeature>() {
@Override
public SimpleFeature call(Manzana manzana) {
try {
SimpleFeatureType TYPE = DataUtilities.createType("", "geom,name:String");
return SimpleFeatureBuilder.build(TYPE, new Object[]{ null, "name1"}, null);
}catch (Exception e){
System.out.println(e.getMessage());
return null;
}
}
}).subscribe(new Subscriber<SimpleFeature>() {
@Override
public void onCompleted() {
subject.onNext(featureCollection);
subject.onCompleted();
}
@Override
public void onError(Throwable throwable) {
subject.onError(throwable);
}
@Override
public void onNext(SimpleFeature simpleFeature) {
featureCollection.add(simpleFeature);
}
});
return subject;
}
而且這個代碼是誰使用的可觀測海歸的一個:
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/async/geom")
public void asyncGetGeom(@Suspended final AsyncResponse asyncResponse) {
Observable<ArrayList> features = service.getGeoJson2();
features.subscribe(new Observer<ArrayList>() {
@Override
public void onCompleted() {
System.out.println("Se completo la accion!!!");
}
@Override
public void onError(Throwable throwable) {
System.out.println(throwable.getMessage());
}
@Override
public void onNext(ArrayList features) {
asyncResponse.resume(features);
}
});
}
的方法onNext()不會被調用!
感謝
請提供一個短代碼的例子,你已經嘗試過目前爲止。 – ehehhh
你也可以顯示這種方法返回什麼? 'manzanaRepository.getManzanas()' – ehehhh
可觀察 –