RxJava zip运算符在后台进行15+网络调用


private fun getAllFollowers(user: User){
val items = user.items
val requests = ArrayList<Observable<List<Followers>>>()
for (item in items!!.iterator()) {
requests.add(AutoCompleteApiProvider.getFollowersList(item.followersUrl))
}
//here ZIP is not resolving
Observable.zip(requests, Function<ArrayList<Followers>,java.util.ArrayList<java.util.ArrayList<Followers>>>(){
var allResponse = java.util.ArrayList<java.util.ArrayList<Followers>>()
allResponse.add(it)
return@Function allResponse
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(Action1<ArrayList<ArrayList<Followers>>> { time -> Log.d(TAG, "I will call adapter here") },
Action1<Throwable> { throwable ->  Log.d(TAG, "error handing part here")})
}

此处 zip 运算符无法解析。我不确定我是否将正确的参数传递给 zip 运算符。

我想执行以下任务。 使用 GitHub API 按用户名搜索用户(排序方式为 关注者数量(,并在回收器视图中显示结果

所以当用户在 editText 中键入时,我正在调用 Github API,它提供了用户名建议,但我想根据每个名称的关注者数量对这个名称进行排序。 为了让关注者计数,我需要使用用户名作为查询参数进行单独的 Github API 调用,API 将使用关注者对象进行响应。我会计算这个追随者对象。

这里棘手的部分是搜索建议 API 是否提供 30 个用户作为响应。 我将不得不并行进行 30 个网络调用,并且必须等到每个 API 调用的响应。一旦我有 30 个响应,我将计算每个用户的关注者并执行关注者明智的排序并在回收器视图中显示结果

所以一旦我有用户名建议。我使用 rxJava ZIP 运算符进行 API 调用以获取关注者。 我正在制作一个Observable<List<Followers>>列表,并将此列表传递给 zip 运算符,我的问题是我应该在 zip 运算符中将哪个函数作为第二个参数传递。对此有什么建议吗?

其余代码已完成,但我卡在 zip 运算符上。

variable requests is a ArrayList of observable
val observableFun = Observable.zip(requests, Function<Array<Any>,
HashMap<ItemsItem, ArrayList<Followers>>> { t ->
/* write your own logic to play around combine response of all observalble*/
return@Function allResponse
})

并订阅此可观察的乐趣。

最新更新