首页 > 解决方案 > javascript 结果执行得太晚

问题描述

我称之为 javascript,因为这是归档它的唯一方法。然后我从 javascript 中调用我的 Java/kotlin 方法“splitIt”来填充我的字段。然后我希望最后返回这个结果。
但 javascript 在最后运行,所以结果为空

   fun test01(): List<String> {

        element.node.runWhenAttached { ui ->
            println(1)

            val x = ui.page.executeJavaScript(

                """setTimeout(
                |   function splitMyHTML () {
                |       ${'$'}0._editor.insertText(${'$'}0._editor.getSelection(true).index,"$CODEWORD");
                |       ${'$'}0.${'$'}server.splitIt();
                |   }
                |   ,0
                |)""".trimMargin(), element
            )

        }

        println(2)

        return listOf(firstPart, secondPart)


    }

    @Suppress("unused") // this is used in javascript
    @ClientCallable
    fun splitIt() {
        firstPart = "test1"
        secondPart = "test2"
        println(20)
    }

输出打印为 1 2 20 且列表为空

但我希望它是 1 20 2 并且列表要填写“test1”和“test2”

标签: javascriptjavakotlinvaadin

解决方案


推荐阅读