【问题标题】:Kotlin RxJava Call API in loop one by one, terminate the loop if any API response has desire resultKotlin RxJava 在循环中一一调用 API,如果任何 API 响应有期望的结果,则终止循环
【发布时间】:2021-04-23 08:06:22
【问题描述】:

我想为列表中的每个项目调用 API,当收到的响应有期望结果时将返回并终止循环。

我当前的代码:

Observable.from(riffInPlayerSubscription)
.flatMap { item ->
   API.getAccessCheck(accessToken, item.itemId)
 }.flatMap { itemAccessResponse ->

                                    if (!itemAccessResponse.isExpired()) {
                                        credentialStore.hasActiveSubscription = true
                                        return@flatMap Observable.just(true)
                                    }
                         
}

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

【问题讨论】:

    标签: kotlin rx-java2


    【解决方案1】:

    使用skipWhiletake

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多