GWT JSNI从JSNI函数返回字符串

时间:2016-05-08 17:54:57

标签: gwt jsni

编辑我认为因为它是一个异步调用,当我调用方法数据时还没有设置。

String theData = getData("trainer") // not set yet

我有以下JSNI功能。如果我调用此函数它返回一个空字符串,但是在它之前显示数据存在的console.log。由于某种原因,无法返回似乎数据。

public native String getData(String trainerName)/*-{
    var self = this;
    $wnd.$.get( "http://testdastuff.dev/trainerstats", { trainer: trainerName} )
     .fail(function() {
         $wnd.console.log("error");
      })
     .done(function( data ) {
         console.log("DATA IS: " + data);
         return data;
    });

    }-*/;

1 个答案:

答案 0 :(得分:1)

您认为这是异步调用是正确的。 传递给done的回调的返回不会返回到您所做的原始调用。

如果您使用了以下代码,您将在控制台中获得2条消息,第一条消息将获得空数据,第二条消息将获得正确的数据。

String theData = getData("trainer");
consoleLog("The data is " + theData);
// suppose consoleLog as a native function to console.log

因此你应该像这样做回调。

.done(function( data ) {
     console.log("DATA IS: " + data);
     theData = data; // if theData is within the same scope and you want to store
     doSomethingWith(theData); // <-- here you can interact with theData
})

doSomethingWith(theData)甚至可以调用Java方法。