java - 创建保持原始顺序的单声道数组对象
问题描述
我需要实现返回 Mono< Array< ProcessedObject>> 的函数。作为参数,它采用对象列表并使用返回 Mono<ProcessedObject> 的函数处理它们。函数需要保持原始顺序,这意味着返回列表中的第一个元素必须从参数列表中的第一个元素创建。到目前为止,我有以下解决方案,但它没有保持所需的顺序。Flux 甚至有可能吗?
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
.
private fun createItems(objects: List<Someobjects>): Mono<Array<ProcessedObject> {
return Flux.fromIterable(objects)
.concatMap {
processObject(it)
}.collectList().map { it.toTypedArray() }
}
flatMap 和 concatMap 的区别在于后者保留了原来的顺序。
推荐阅读
- python-3.x - 根据列表中的值之一对列表中的字典进行排序
- wpf - WPF 用户控件在可见性属性更改时不可见
- microsoft-graph-api - Microsoft Graph 中的人员 API 未返回更新的结果
- c# - 使用 Swashbuckle 将文本部分添加到 Swagger
- javascript - 在 JSON 文件中搜索
- python - 如何将旋转数据帧的转置插入 np.corrcoef 方法?
- java - org.springframework.ws.client.WebServiceTransportException:[ISS.0084.9001] 无效凭据 [401]
- javascript - 如何禁用 Microsoft Edge 浏览器的保存密码浏览器弹出窗口
- java - 无法在本地运行 GCP DataflowTemplates
- php - 如何在php中上传之前将base64图像调整为300 * 300?