我正在尝试使用Kotlin Kovenant,因为我想要一个基于Promise的解决方案来跟踪我的改造请求。
我首先要做的是:
all (
walkingRoutePromise,
drivingRoutePromise
) success { responses ->
//Do stuff with the list of responses
}
我通过的承诺是在改造电话完成时解决的承诺。但是,“响应”是两个相同对象的列表。调试时,我可以确认将具有不同值的两个不同对象传递给各自的resolve方法。但是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)访问唯一值,该怎么办?好像是一个非常破碎的系统。