一旦我拥有代表它的 Rhino 对象,如何使用 Rhino ( , not ) 调用以下sum()
函数,将 Java 方法作为回调传递给它(或任何其他允许我在 Java 中接收结果的方式) ?org.mozilla.javascript
javax.script
Function
function sum(a, b, successHandler) {
successHandler(a + b);
}
一旦我拥有代表它的 Rhino 对象,如何使用 Rhino ( , not ) 调用以下sum()
函数,将 Java 方法作为回调传递给它(或任何其他允许我在 Java 中接收结果的方式) ?org.mozilla.javascript
javax.script
Function
function sum(a, b, successHandler) {
successHandler(a + b);
}
这是我找到的解决方案:
function.call(context, scope, null, new org.mozilla.javascript.Function() {
@Override
public Object call(Context cx, Scriptable scope, Scriptable thisObj, Object[] args) {
System.out.println(args[0]);
},
// ...
});
不幸的org.mozilla.javascript.Function
是,接口如此之大,但一切似乎都可以正常工作,即使所需的方法都没有真正的实现。
不过,这并不完全优雅。我希望有更好的方法。