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)
                                    }
                         
}

但它会循环所有项目并且不会终止。

使用skipWhiletake:

Observable.from(riffInPlayerSubscription)
.flatMap { item ->
   API.getAccessCheck(accessToken, item.itemId)
}
.skipWhile { it.isExpired() }
.take(1)
.map { 
   credentialStore.hasActiveSubscription = true
   true
}