具有异步等待回调的列表中的RxJava

具有异步等待回调的列表中的RxJava,java,rx-java,observable,rx-java2,Java,Rx Java,Observable,Rx Java2,谢谢你@Geoffrey Marizy 答复: 有关ConcatMap的更多信息,请向操作员咨询。有关此主题的完整文章: 将您的请求包装为可观察,然后将其作为参数传递给concatMap: for (String id : ids) { getMessage(id, new urlGenCallback() { @Override public void urlAndToken(String url, String token, String idx) {

谢谢你@Geoffrey Marizy

答复: 有关ConcatMap的更多信息,请向操作员咨询。有关此主题的完整文章:

将您的请求包装为可观察,然后将其作为参数传递给concatMap:

for (String id : ids) {
    getMessage(id, new urlGenCallback() {
        @Override
        public void urlAndToken(String url, String token, String idx) {

        }
    });
}
Observable.fromArray(ids.toArray(新字符串[ids.size()]))
.concatMap(s->{
返回Observable.create(newobservableOnSubscribe(){
@凌驾
public void subscribe(@NonNull observeiemitter e)引发异常{
getMessage,新的urlGenCallback(){
@凌驾
公共无效urlAndToken(字符串url、字符串标记、字符串id){
e、 onNext(“……”);
e、 onComplete();
}
});
}
});
}).订阅(新消费者){
@凌驾
public void accept(@NonNull String s)引发异常{
//所有其他代码都在这里
}
});

将您的答案作为答案,而不是问题的编辑。既然问题已经解决,那么做事情的方法就是把解决问题的答案标记为“已接受”
Observable.fromArray(ids.toArray(new String[ids.size()])).subscribe(new Consumer<String>() {
    @Override
    public void accept(@NonNull String s) throws Exception {

    }
});
for (String id : ids) {
    getMessage(id, new urlGenCallback() {
        @Override
        public void urlAndToken(String url, String token, String idx) {

        }
    });
}
Observable.fromArray(ids.toArray(new String[ids.size()])).concatMap(/* your request returning an Observable */)
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
    }
});