Kotlin-在exchangeToFlow内部调用createExceptionAndAwait()的最佳方式

jfewjypa  于 2023-02-19  发布在  Kotlin
关注(0)|答案(1)|浏览(128)

我有以下weblux客户端调用,由于exchangeToFlow不是一个挂起函数,在其中调用use createExceptionAndAwait()的最佳方式是什么?

return webClient.post()
      .uri(url)
      .bodyValue(body)
      .accept(APPLICATION_JSON)
      .exchangeToFlow {
        if (!it.statusCode().is2xxSuccessful) {
          throw httpExceptionHandlerUtil.handleException(it.createExceptionAndAwait())
        }
        it.bodyToFlow()
      }
cmssoen2

cmssoen21#

我不使用Spring,所以这完全是猜测。
lambda的输出是一个Flow,所以你可以像这样把它 Package 在一个flow构建器中,这样你就可以调用suspend函数:

.exchangeToFlow {
  flow {
    if (!it.statusCode().is2xxSuccessful) {
      throw httpExceptionHandlerUtil.handleException(it.createExceptionAndAwait())
    }
    emitAll(it.bodyToFlow())
  }
}

相关问题