我使用javax.script将javascript代码嵌入到Java方法中。
在我的项目中,javascript负责通过websocket发送异步http请求。收到响应后,我需要执行一个回调函数。
我想调用一个用Java编写的方法作为回调。
在这里的文档中:http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/解释了如何在javascript中为接口实现java方法,但没有解释如何从javascript调用Java方法。
谢谢
发布于 2013-05-10 09:24:15
不确定这是否是您正在寻找的,但这里有一个代码示例,它将java对象回调提供到一些javascript代码中,这些代码稍后将在该回调上进行回调:
public class JsCallback{
public static void main(String[] args) throws Exception{
ScriptEngineManager factory = new ScriptEngineManager();
ScriptEngine engine = factory.getEngineByName("JavaScript");
engine.put("cb", new JsCallback());
engine.eval("println('Doing something in javascript here first');" +
"cb.apply('bar');");
}
public void apply(String s){
System.out.println("Back in java code here: " + s);
}
}发布于 2016-03-10 22:33:01
在Java8中使用Function:
JS:
run = function(callback) {
callback("foo");
}Java:
Function<String,String> fn = (arg) -> {
return arg.toUpperCase();
};
// call run(fn)
invokeFunction("run", fn)您还可以使用Runnable (没有参数或返回值)和许多其他单方法接口作为回调接口。根据我所理解的,它将尝试找到一个动态匹配参数列表的方法。
想必您也可以使用它将函数绑定到作用域。
https://stackoverflow.com/questions/16473544
复制相似问题