java - 如何检查 RXJava 是否完成或从队列中清空
问题描述
我有一个使用 Retrofit 和 RXJava 循环请求的函数,如下所示
for (i in month..12) {
if (Conn.connection(applicationContext)) {
Api.create().getDateInMonth("2019-$i-01")
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(object : Observer<DateDataResponse> {
override fun onSubscribe(d: Disposable) {}
@SuppressLint("NewApi")
override fun onNext(dateDataResponse: DateDataResponse) {
Log.d("OnSuccess", "success")
}
@SuppressLint("NewApi")
override fun onError(e: Throwable) {
Log.d("onError", "error" + e.message)
}
override fun onComplete() {
Log.d("onComplete", "onComplete")
}
})
} else
Log.d("onError", "No Internet Connection")
}
}
因此,如果某些请求错误或成功,它将一直持续到第 12 个请求完成。我想检测我是否已经从我的请求中得到了所有响应
解决方案
如果你把它变成一个单一的链,那么你可以使用onComplete()
回调来验证你的所有请求都已经完成。例如:
Observable.range(0, 12)
.filter { i-> Conn.connection(applicationContext) }
.flatMap { i -> Api.create().getDateInMonth("2019-$i-01") }
.subscribeOn(io())
.observeOn(mainThread())
.subscribe({ i-> }, { t-> }, {/*onComplete*/ })
推荐阅读
- c# - 在有时丢失的属性上使用 JsonConverter,以及检查单个项目或数组
- python - 将字符串而不是 file_location 传递给函数
- git - repo init url -b TAG后如何更改repo分支/标签?
- node.js - npm install java fatal error: 'jni.h' file not found #include
- angular - Send a number instead of a string to Angular's matToolTip as part of mat-icon-button? Alternatively, convert number to string in an Angular template?
- silverstripe - Silverstripe 3.7 Unit Tests - tearDownOnce() and setUpOnce() do not trigger
- java - 归并排序有什么区别?中 = 左 + (右 - 左) / 2 中 = (左 + 右) / 2
- vb.net - User Control Form (Wizard panel) to have common ShowData() function
- python - Flask error 'ImportError: cannot import name 'db' from 'hello' (C:\Users\admin\flask_stuff\venv\hello.py)' when I try to create an SQL Database
- python - Convert and save PytorchTensor to .mat image on GPU in python