使用Rhino调用一个将回调作为参数的函数

时间:2012-12-10 22:39:13

标签: java javascript rhino

如何使用Rhino(sum(),而不是org.mozilla.javascript)调用以下javax.script函数,将Java方法作为回调传递(或任何其他允许我使用的方法)一旦我有Rhino Function对象代表它,我会收到Java中的结果吗?

function sum(a, b, successHandler) {
    successHandler(a + b);
}

1 个答案:

答案 0 :(得分:3)

这是我找到的解决方案:

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是一个如此庞大的界面,但即使所有方法都没有真正的实现,一切似乎都能正常工作。

但这并不完美。我希望有更好的方法。