首页 > 解决方案 > 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) 访问唯一值,我应该怎么做?似乎是一个非常破碎的系统。

标签: kotlinkovenant

解决方案


推荐阅读