Rx java 在第一个可观测值的所有值都被满足后,如何返回可观测值?
我有一个方法,可以从字符串列表中创建一个可观察的Rx java 在第一个可观测值的所有值都被满足后,如何返回可观测值?,rx-java,Rx Java,我有一个方法,可以从字符串列表中创建一个可观察的 public Observable makeUrls() { List<String> urls = new ArrayList<>(); return Observable.from(urls) .flatMap(url -> upload(url)); } public Observable makeURL(){ 列表URL=新的ArrayList(); 返回可观察的。从
public Observable makeUrls() {
List<String> urls = new ArrayList<>();
return Observable.from(urls)
.flatMap(url -> upload(url));
}
public Observable makeURL(){
列表URL=新的ArrayList();
返回可观察的。从(URL)
.flatMap(url->上传(url));
}
现在我想在发出列表中的所有值之后返回方法b
public Observable b(List<String> strings){
return Observable.from(strings)
..some other work here...;
}
公共可观察b(列表字符串){
返回可观察的。从(字符串)
…这里还有其他工作。。。;
}
我需要的预期代码如下所示:
public Observable makeUrls() {
List<String> urls = new ArrayList<>();
return Observable.from(urls)
.flatMap(url -> upload(url))
// This part is what i can't figure out how to write...
// I want to call this after all items are emitted but I can't return Observable
.doOnCompleted(()->b(strings));
}
public Observable makeURL(){
列表URL=新的ArrayList();
返回可观察的。从(URL)
.flatMap(url->上载(url))
//这部分是我不知道怎么写的。。。
//我想在所有项目发出后调用它,但我不能返回Observable
.doOnCompleted(()->b(字符串));
}
使用.ignoreElements
和concatWith
:
假设b(字符串)
返回可观察的:
使用.ignoreElements
和concatWith
:
假设b(字符串)
返回可观察的:
问题不在清单上!问题是doOnCompleted()无法返回可观察的,因此我可以继续流…如果我尝试使用Flatmap而不是doOnCompleted,会发生什么?它的反应是一样的吗?好的,所以b不把流作为一个参数,而是独立的,返回它自己的可观察的,只是你希望它在上传完成后运行?我会更新答案的。好的,我已经用我的猜测更新了。你能改进这个问题,让我们知道b的签名是什么,字符串是从哪里来的吗?好的。是的,如果你需要处理所有的排放物,toList是有效的,但问题并不清楚。我应该把答案保持原样,还是把问题和答案清理干净?问题不在清单上!问题是doOnCompleted()无法返回可观察的,因此我可以继续流…如果我尝试使用Flatmap而不是doOnCompleted,会发生什么?它的反应是一样的吗?好的,所以b不把流作为一个参数,而是独立的,返回它自己的可观察的,只是你希望它在上传完成后运行?我会更新答案的。好的,我已经用我的猜测更新了。你能改进这个问题,让我们知道b的签名是什么,字符串是从哪里来的吗?好的。是的,如果你需要处理所有的排放物,toList是有效的,但问题并不清楚。我应该让答案保持原样,还是清理问题和答案?什么是“字符串”?如果这是您的原始url或上传返回值的集合(字符串url)?这个问题仍然没有答案吗?根据您的评论,似乎应该接受Dave的答案,除非有其他内容。是的,问题已经解决,但Dave Moten说他将编辑他的答案,但他尚未编辑。什么是“字符串”?如果这是您的原始url或上传返回值的集合(字符串url)?这个问题仍然没有答案吗?根据您的评论,似乎应该接受Dave的答案,除非有其他内容。是的,问题已得到回答,但Dave Moten说他将编辑他的答案,但他尚未编辑。
return Observable.from(urls)
.flatMap(url -> upload(url))
.ignoreElements()
.castAs(Thing.class)
.concatWith(b(strings));