gpt4 book ai didi

javascript - GWT:如何执行作为参数传递的 native js函数(因此无法全局访问)

转载 作者:行者123 更新时间:2023-11-28 17:45:02 25 4
gpt4 key购买 nike

这是重现我遇到的问题的最小代码片段:

import java.util.function.Consumer;

public class NaivePromise<T> {

public NaivePromise(Consumer<Consumer<T>> resolve) {
super();
create(resolve);
}

public native NaivePromise<T> create(Consumer<Consumer<T>> handler) /*-{
return new Promise(function (resolve) {
console.log("DBG NATIVE RESOLVE");
handler.@java.util.function.Consumer::accept(*)(resolve)
});
}-*/;


public static void pong() {
new NaivePromise<String>(resolve -> {
resolve.accept("HERE WE'LL GET AN ERROR, SINCE RESOLVE IS ACTUALLY A NATIVE FUNCTION");
});
}

}

我的问题是 - 如何执行作为 lambda 传递给 GWT Consumer(或任何其他功能接口(interface))的 native 函数?

最佳答案

你必须制作 resolve一个JavaScriptObject而不是Consumer<String> ,并使用JSNI调用它:

private native void call(JavaScriptObject resolve, String arg) /*-{
resolve(arg);
}-*/;

虽然你实际上应该在这里使用 JsInterop,带有 @JsFunction界面;实际上可能只是使用 Elemental 2 的 Promise 映射.

关于javascript - GWT:如何执行作为参数传递的 native js函数(因此无法全局访问),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46943294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com