Я работаю в приложении, чем конвертирую один список объектов в другие объекты, для этого я использую Observable of Rx Java.RxJava - Наблюдаемые: один наблюдаемый, чем возврат другой Наблюдаемый
У меня есть два метода: один из них - это адаптер (фасад Джерси), у которого есть служба асин, и этот метод потребляет от другой службы, наблюдаемой.
Мне нужно потреблять Наблюдаемое и обрабатывать каждый элемент, когда это завершено. Я создал некий список всех обработанных элементов и возвращаю новый Observable, где E - список обрабатываемых элементов.
Для обработки каждого элемента я использую оператор flatMap, но я не знаю, как создать новый Observer, у которого есть один тип diferente, например, List of all, обработанный оператором flatmap.
Любая идея?
Благодаря
Update:
Этот код, обработать каждый элемент и есть возвращать другой Observable, но я не знаю, если это хорошо сделано.
@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;
}
И этот код является тот, кто использует Observable возвратившихся:
@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
Observable –