मैं वर्तमान में एक सेवा को मारने की कोशिश कर रहा हूं और ग्राहकों को वापस लौटने से पहले ऑब्जेक्ट्स की एक सूची लौटा रहा हूं, मैं सूची में प्रत्येक ऑब्जेक्ट के लिए एक और सिंक्रोनस कॉल करना चाहता हूं ताकि एक लापता फ़ील्ड सेट करने के लिए एक और सेवा कॉल कर सके। । मैं सफलतापूर्वक सभी कॉल किए जा रहा हूं, लेकिन ग्राहक में लौटाई गई वस्तु में इस क्षेत्र में मुझे शून्य पर सेट करने की आवश्यकता है।सब्सक्राइबर पर लौटने से पहले मैं एक अवलोकन योग्य वस्तु को कैसे रोक सकता हूं और इसे आरएक्सजेवा में संशोधित कर सकता हूं?
उदाहरण सेवा::
rx.Observable<List<ExampleObject>> getExampleObject();
rx.Observable<MissingObject> getMissingObjectByFoo(@Path("foo") String foo);
उदाहरण कक्षा: यहाँ मेरी कोड का एक उदाहरण है
public class ExampleObject {
String foo;
MissingObject bar;
public String getFoo() {
return this.foo;
}
public void setFoo(String value) {
this.foo = value;
}
public MissingObject getBar() {
return this.bar;
}
public void setBar(MissingObject value) {
this.bar = value;
}
}
उदाहरण कार्यान्वयन:
mService.getExampleObject().flatMap(new Func1<List<ExampleObject>, Observable<?>>() {
@Override
public Observable<List<ExampleObject>> call(List<ExampleObject> exampleObjects) {
for (ExampleObject entry : exampleObjects) {
String foo = entry.getFoo();
mService.getMissingObjectByFoo(foo)
.subscribeOn(mScheduler.backgroundThread())
.observeOn(mScheduler.mainThread())
.subscribe(new Subscriber<MissingObject>() {
@Override
public void onCompleted() {
}
@Override
public void onError(Throwable e) {
}
@Override
public void onNext(MissingObject missingObject) {
entry.setBar(missingObject);
}
});
}
return Observable.just(exampleObjects);
};
क्या आप 'flatMap' का उपयोग नहीं कर सकते? – njzk2
मैं flatmap का उपयोग कर रहा हूं, लेकिन सूची ग्राहक को वापस लौटा है सभी MissingObject फ़ील्ड –
के लिए शून्य है, आप कोड साफ़ करने के लिए RxJava का उपयोग करते समय रेट्रोलैब्डा का उपयोग कर सकते हैं। – aleksandrbel