3 Stimmen

Aufrufen einer Funktion, die einen Rückruf als Argument verwendet, mit Rhino

Wie kann ich die folgende sum()-Funktion mit Rhino (org.mozilla.javascript, nicht javax.script) aufrufen, indem ich ihr eine Java-Methode als Callback übergebe (oder auf irgendeine andere Weise, die es mir ermöglicht, das Ergebnis in Java zurück zu erhalten), sobald ich das Rhino Function-Objekt habe, das sie repräsentiert?

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

3voto

rid Punkte 58329

Das ist die Lösung, die ich gefunden habe:

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]);
    },

    // ...
});

Es ist bedauerlich, dass org.mozilla.javascript.Function eine so umfangreiche Schnittstelle ist, aber alles scheint korrekt zu funktionieren, auch wenn keiner der erforderlichen Methoden eine echte Implementierung hat.

Dies ist jedoch nicht gerade elegant. Ich wünschte, es gäbe einen besseren Weg.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X