Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

How to call method with JS callback #6

Open
hosek opened this issue Feb 26, 2015 · 7 comments
Open

How to call method with JS callback #6

hosek opened this issue Feb 26, 2015 · 7 comments

Comments

@hosek
Copy link

hosek commented Feb 26, 2015

Hi,
is possible to call method with JS callback?
Example:

Library.prototype.fetch = function(url,cb,scope) {
        var request = new XMLHttpRequest();

    request.onreadystatechange = function() {
        if (request.readyState==4 && request.status==200) {
            cb.call(scope,request.responseText);
        }
    }
        request.open("GET",url,true);
        request.send();
}

In JS call looks like this:

instanceOfLibrary.fetch('_URL_', function(data) {document.getElementById("output").innerHTML = "<h2>Fetched:</h2><pre>"+data+"</pre>";

If yes, could I ask how to define the callback in interface?

@Method("instanceOfLibrary.fetch")
void fetch(String url, ???? , Callback<String> callback);

Thank you in advance for any hint!

@emilsjolander
Copy link
Contributor

This is not currently possible but i'll look into adding it!

@emilsjolander
Copy link
Contributor

There is still some work to be done on this but the current code in master introduces this feature.

@hosek
Copy link
Author

hosek commented Mar 3, 2015

Great job! Thank you for fast response.
btw there is NPE for all interface calls now
java.lang.NullPointerException: Attempt to invoke virtual method 'long java.util.concurrent.atomic.AtomicLong.incrementAndGet()' on a null object reference at com.flipboard.goldengate.sample.SampleBridge.getNavigator(SampleBridge.java:74)

@emilsjolander
Copy link
Contributor

Thanks for the report, I'm still working on the code and will push an update soon and then to maven central shortly after that

@emilsjolander
Copy link
Contributor

@hosek Try it now and see what you think, i'll publish it if it's what you expected :) Only limitation currently is that the callback can't return anything. This is something that we can add later imho

@Bridge
public interface Sample {

    @Method("[1,2,3,4,5,6,7,8,9,10].forEach")
    void looptyLoop(@JavascriptCallback Callback<Integer> val);

}

@hosek
Copy link
Author

hosek commented Mar 4, 2015

Seems fine! Thanks a lot. Callback return value is unfortunately important for me. I will look at you implementation and maybe try to add it by myself.

@emilsjolander
Copy link
Contributor

@hosek that sounds good! I might have a look at it as well

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants