kotlin - Kotlin Kovenant 为所有 Promise 返回相同的对象
问题描述
我正在尝试使用 Kotlin Kovenant,因为我想要一个基于承诺的解决方案来跟踪我的改造电话。
我首先做的是这样的:
all (
walkingRoutePromise,
drivingRoutePromise
) success { responses ->
//Do stuff with the list of responses
}
我通过的承诺是那些在我的改造电话完成时得到解决的承诺。然而,“响应”是两个相同对象的列表。调试时,我可以确认两个具有不同值的不同对象正在传递给各自的解析方法。但是 kovenant 返回两个相同的对象(内存中的相同位置)
我的下一次尝试是这样的:
task {
walkingRoutePromise
} then {
var returnval = it.get()
walkingDTO = returnval.deepCopy()
drivingRoutePromise
} success {
val returnval = it.get()
drivingDTO = returnval.deepCopy()
mapRoutes = MapRoutes(walkingDTO!!, drivingDTO!!)
currentRoute = mapRoutes!!.walking
callback()
}
我尝试一次调用一个并执行结果的深层副本。这适用于第一个响应,但后来我发现成功块中的 it.get() - 第二次调用的成功块 - 与我在“then”块中从 it.get() 获得的相同对象未更改. 似乎 Kovenant 被实现为对其所有决议使用一个对象,但在你解决一次之后,它用于决议的单个对象无法更改。如果我想从 promise.resolve(object) 访问唯一值,我应该怎么做?似乎是一个非常破碎的系统。
解决方案
推荐阅读
- mysql-workbench - “刷新记录集”命令给出错误“有待处理的更改。请先提交或回滚。”
- spring-boot - 在 activiti bpmn 工作流中使用带有 TimerCatchingEvents 的 ServiceTasks 行为不一致
- kubernetes - Kubernetes集群默认时区?
- android - 使用 sqlite 数据库从随机字符创建单词
- mongodb - 试图调用类“Doctrine\ODM\MongoDB\Aggregation\Builder”的未定义方法“allowDiskUse”
- android - 如何在广播接收器中发出 API 请求?
- azure-devops - 天蓝色管道删除旧的天蓝色 git 分支(不是回购)
- java - 我在 selenium 自动化中创建页面对象模型框架,我面临一个 java 空指针异常
- python - Python中的视差图实现与内置的OpenCV函数不匹配
- c# - 双向绑定的一些问题 - 在 UWP 中无法按预期工作