2017-06-21 60 views
-1

这里是我的目标是收集异步响应:收集来自来自第三方库的异步任务的响应如何使用RxJava

要求:使用RxJava2为了完成

我被困在想使用哪些运营商或运营商这样做,想法是值得赞赏的。

我的想法是:

Flowable.fromIterable(list) 
    .anOperatorCanOnNextTheResponse() 
    .buffer() 
    .subscribe(newList) 
+1

你能告诉我们你被困住的东西吗? – nhaarman

+0

@nhaarman我更新了我的问题。 –

+0

我想你可以在订阅者的onNext方法中收集响应,并使用onCompleted中收集的所有方法。 – Kota1921

回答

0

最后我以PublishProcessor完成,PublishSubject也可以做的伎俩,但我跳过它们之间的区别。

val mPublishProcessor: FlowableProcessor<String> = PublishProcessor.create<String>().toSerialized() 

list.forEach { 
    doSomeAsyncTasksWithCallback(string) { 
     mPublishProcessor.onNext(string) 
    } 
} 

mPublishProcessor 
.buffer(list.size) 
.observeOn(AndroidSchedulers.mainThread()) 
.subscribe { 
    doSomethingWithTheCollectedStrings() 
} 
+0

您可能想在'subscribe'之前'subscribeOn'。否则缓冲区操作将发生在Android的主线程 – Pelocho

+0

感谢您的提示,它应该观察缓冲区后的主线程() –