我需要创建一个执行java方法并返回结果的函数。它是静态的,因为很多其他函数都会调用这个函数。所以我这样做了:
public static function FKDescription(dest:String):String{
var jRemote:RemoteObject = new RemoteObject();
var s:String;
jRemote.destination = dest;
jRemote.getValues.addEventListener(ResultEvent.RESULT,valresult);
jRemote.getValues();
function valresult(event:ResultEvent):void{
s = event.result as String;
}
return s;
}
但是函数返回null,因为在main函数结束时没有调用valresult()。我做了什么让FKDescription()返回来自remoteobject的字符串?
坦克。
答案 0 :(得分:2)
那是因为HTTP调用是异步的,所以你必须得到结果。你想要做的是将结果处理程序移除到它自己的函数,以便它等待结果,然后用它做一些事情。 不可以做你现在想要完成的事情,这就是立即返回价值。
答案 1 :(得分:1)
正如J_A_X所说,所有的http请求都是异步的,我建议以这种方式重构你的代码:
public static function FKDescription(dest:String, callback:Function):String{
var jRemote:RemoteObject = new RemoteObject();
var s:String;
jRemote.destination = dest;
jRemote.getValues.addEventListener(ResultEvent.RESULT,valresult);
jRemote.getValues();
function valresult(event:ResultEvent):void{
callback(event.result as String);
}
}
并且在调用者中,而不是:
ret = FKDescription("something");
otherFunction(ret);
你可以这样做:
FKDescription("something", otherFunction);