首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javax.script向javascript传递要用作回调的Java方法

javax.script向javascript传递要用作回调的Java方法
EN

Stack Overflow用户
提问于 2013-05-10 08:55:26
回答 2查看 1.6K关注 0票数 2

我使用javax.script将javascript代码嵌入到Java方法中。

在我的项目中,javascript负责通过websocket发送异步http请求。收到响应后,我需要执行一个回调函数。

我想调用一个用Java编写的方法作为回调。

在这里的文档中:http://docs.oracle.com/javase/6/docs/technotes/guides/scripting/programmer_guide/解释了如何在javascript中为接口实现java方法,但没有解释如何从javascript调用Java方法。

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-05-10 09:24:15

不确定这是否是您正在寻找的,但这里有一个代码示例,它将java对象回调提供到一些javascript代码中,这些代码稍后将在该回调上进行回调:

代码语言: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);
  }
}
票数 1
EN

Stack Overflow用户

发布于 2016-03-10 22:33:01

在Java8中使用Function

JS:

代码语言:javascript
复制
run = function(callback) {
  callback("foo");
}

Java:

代码语言:javascript
复制
Function<String,String> fn = (arg) -> {
  return arg.toUpperCase();
};

// call run(fn)
invokeFunction("run", fn)

您还可以使用Runnable (没有参数或返回值)和许多其他单方法接口作为回调接口。根据我所理解的,它将尝试找到一个动态匹配参数列表的方法。

想必您也可以使用它将函数绑定到作用域。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16473544

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档