编辑我认为因为它是一个异步调用,当我调用方法数据时还没有设置。
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;
});
}-*/;
答案 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方法。