Kotlin Kovenant为所有诺言返回相同的对象

时间:2019-01-15 02:46:12

标签: kotlin kovenant

我正在尝试使用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)访问唯一值,该怎么办?好像是一个非常破碎的系统。

0 个答案:

没有答案