0
私はレトロフィット2と一緒にRxKotlin - ダイナミックオブザーバー配列
をRxKotlinを使用している私は、単一の操作にオブザーバーの動的なリストを持っているどのように数字をしようとしています。
最初の観察者が操作をトリガーする必要があり、操作が完了/完全な操作たら
を失敗するまで、すべての追加のオブザーバーは待つべき、私はデータ操作(キャッシュ/メモリ内ストア)にする必要があり、その後、すべての通知しますオブザーバー。
ここに私がやったことだ:
class UserManager
{
val observers = ArrayList<Observer<ArrayList<User>>>()
var isFetchingUsers = false
fun getUsers(observer: Observer<ArrayList<User>>)
{
observers.add(observer)
if (isFetchingUsers)
{
return
}
api.getUserList.observeOn(AndroidSchedulers.mainThread()).subscribe(object : Observer<UserListResponse>
{
override fun onNext(response: UserListResponse)
{
// Do some manipulations on the response and notify all
observers.forEach {
it.onNext(response.getUsers())
}
}
override fun onError(e: Throwable)
{
observers.forEach {
it.onError(Throwable())
}
}
override fun onComplete()
{
isFetchingUsers = false
observers.clear()
}
override fun onSubscribe(d: Disposable)
{
}
})
}
}
ここでレトロフィット観察可能な作成があります(この1つはJavaである。)
/**
* Get users
*/
public Observable<UserListResponse> getUserList()
{
return mService.getUserList().subscribeOn(Schedulers.io());
}
私はこの
を行うためのより良い方法があると確信していますありがとう!