Kotlin Kovenant возвращает один и тот же объект для всех обещаний - PullRequest
0 голосов
/ 15 января 2019

Я пытаюсь использовать Kotlin Kovenant, потому что хочу, чтобы решение на основе обещаний отслеживало мои модифицированные вызовы.

То, что я сделал первым, было:

    all (
        walkingRoutePromise,
        drivingRoutePromise
    ) success { responses ->
        //Do stuff with the list of responses
    }

, где обещания, которые я передаю, - это те, которые были выполнены после завершения моих звонков. Однако «ответы» - это список двух одинаковых объектов. При отладке я могу подтвердить, что два разных объекта с разными значениями передаются в соответствующие методы разрешения. Однако Ковенант возвращает два одинаковых объекта (одно и то же место в памяти)

Моя следующая попытка была такой:

    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 () в блоке успеха - блоке успеха второго вызова - это тот же неизмененный объект, который я получаю от it.get () в блоке then , Кажется, что Ковенант реализован так, чтобы использовать один объект для всех своих разрешений, но после однократного разрешения единственный объект, который он использует для разрешений, не может быть изменен. Что я должен делать, если я хочу получить доступ к уникальным значениям из обещания (объекта)? Похоже, очень сломанная система.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...