Kotlin RxJava 一个一个循环调用 API ,如果任何 API 响应有期望的结果则终止循环
Kotlin RxJava Call API in loop one by one, terminate the loop if any API response has desire result
我想为列表中的每个项目调用 API,当收到的响应有期望的结果时,将 return 并终止循环。
我当前的代码:
Observable.from(riffInPlayerSubscription)
.flatMap { item ->
API.getAccessCheck(accessToken, item.itemId)
}.flatMap { itemAccessResponse ->
if (!itemAccessResponse.isExpired()) {
credentialStore.hasActiveSubscription = true
return@flatMap Observable.just(true)
}
}
但它会循环所有项目并且不会终止。
使用skipWhile
和take
:
Observable.from(riffInPlayerSubscription)
.flatMap { item ->
API.getAccessCheck(accessToken, item.itemId)
}
.skipWhile { it.isExpired() }
.take(1)
.map {
credentialStore.hasActiveSubscription = true
true
}
我想为列表中的每个项目调用 API,当收到的响应有期望的结果时,将 return 并终止循环。
我当前的代码:
Observable.from(riffInPlayerSubscription)
.flatMap { item ->
API.getAccessCheck(accessToken, item.itemId)
}.flatMap { itemAccessResponse ->
if (!itemAccessResponse.isExpired()) {
credentialStore.hasActiveSubscription = true
return@flatMap Observable.just(true)
}
}
但它会循环所有项目并且不会终止。
使用skipWhile
和take
:
Observable.from(riffInPlayerSubscription)
.flatMap { item ->
API.getAccessCheck(accessToken, item.itemId)
}
.skipWhile { it.isExpired() }
.take(1)
.map {
credentialStore.hasActiveSubscription = true
true
}