List<String> listExample = Arrays.asList("one", "two", "three");
想想我有字符串列表,并使用 RxJava(Observable.fromArray)
Observable.fromArray(ids.toArray(new String[ids.size()])).subscribe(new Consumer<String>() {
@Override
public void accept(@NonNull String s) throws Exception {
}
});
这里认为每个字符串都有一个Async回调,一旦我收到回调,它应该移动到下一个字符串。是否可以使用rxjava?
这是我目前正在使用的代码,它不会等到回调权利。
for (String id : ids) {
getMessage(id, new urlGenCallback() {
@Override
public void urlAndToken(String url, String token, String idx) {
}
});
}
谢谢 @Geoffrey Marizy
答案:Check Below 有关ConcatMap的更多信息Visit Here
答案 0 :(得分:1)
您正在寻找concatMap运营商。有关此主题的完整文章:https://fernandocejas.com/2015/01/11/rxjava-observable-tranformation-concatmap-vs-flatmap/
将您的请求包装为Observable,然后将其作为参数传递给concatMap:
Observable.fromArray(ids.toArray(new String[ids.size()])).concatMap(/* your request returning an Observable */)
答案 1 :(得分:0)
Observable.fromArray(ids.toArray(new String[ids.size()]))
.concatMap(s -> {
return Observable.create(new ObservableOnSubscribe<String>() {
@Override
public void subscribe(@NonNull ObservableEmitter<String> e) throws Exception {
getMessage(s, new urlGenCallback() {
@Override
public void urlAndToken(String url, String token, String id) {
e.onNext("......");
e.onComplete();
}
});
}
});
}).subscribe(new Consumer<String>() {
@Override
public void accept(@NonNull String s) throws Exception {
//All other code goes here
}
});