繁体   English   中英

保持原始顺序创建单声道数组对象

[英]Create Mono Array Object with keeping original ordering

我需要实现返回Mono <Array <ProcessedObject >>的函数。 作为参数,它将获取对象列表并使用返回Mono <ProcessedObject>的函数对其进行处理。 函数需要保持原始顺序,这意味着必须从参数列表的第一个元素创建返回列表上的第一个元素。 到目前为止,我有以下解决方案,但它没有保持所需的顺序。 通量甚至有可能吗?

       private fun createItems(objects: List<Someobjects>): Mono<Array<ProcessedObject>> {
         return Flux.fromIterable(objects)
           .flatMap {
             processObject(it)
           }.collectList().map { it.toTypedArray() }
}

编辑:澄清一点processObject返回Mono <ProcessedObject>

您可以尝试使用concatMap而不是flatMap

这是Docu https://projectreactor.io/docs/core/release/api/reactor/core/publisher/Flux.html#concatMap-java.util.function.Function-的链接

private fun createItems(objects: List<Someobjects>): Mono<Array<ProcessedObject> {
         return Flux.fromIterable(objects)
           .concatMap {
             processObject(it)
           }.collectList().map { it.toTypedArray() }
}

flatMap和concatMap之间的区别在于,后者保留原始顺序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM