3 回答

TA貢獻1811條經(jīng)驗 獲得超5個贊
在你的情況下,你可以toList()這樣申請
fun doTask(items: List<String>):Observable<Boolean>{
return Observable.fromIterable(items)
.flatMap { processItem(it) }
.toList()
.toObservable()
.flatMap { finalTask() }
}

TA貢獻1998條經(jīng)驗 獲得超6個贊
這個問題可以用zip解決。如果有人想要這個
fun doTask(items: ArrayList<String>): Observable<Boolean> {
val list = arrayListOf<Observable<String>>()
items.forEach {
list.add(processItem(it))
}
return Observable.zip(list) {
}.flatMap {
finalTask()
}
}
fun processItem(s: String): Observable<String> {
print(s)
return Observable.just(s.toUpperCase())
}
fun finalTask(): Observable<Boolean> {
print("final")
return Observable.fromCallable { true }
}

TA貢獻1795條經(jīng)驗 獲得超7個贊
Observable.just("one", "two", "three", "four", "five").subscribe(new Consumer<String>() {
@Override
public void accept(String s) throws Exception {
Log.d("ffff", s);//print: one, two, three, four, five
}
}, new Consumer<Throwable>() {
@Override
public void accept(Throwable throwable) throws Exception {
}
}, new Action() {
@Override
public void run() throws Exception {
Log.d("ffff", "complete");//print: complete
}
});
添加回答
舉報