我需要创建一个函数来执行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()返回来自远程对象的字符串呢?
坦克。
发布于 2011-04-30 02:13:15
这是因为HTTP调用是异步的,所以您必须以某种方式处理结果。您想要做的是删除它自己函数的结果处理程序,以便它等待结果,然后对其执行一些操作。这是不可能的,你现在正在尝试完成的事情,就是立即返回值。,is,,,is,。,你现在想做的事情,就是立即返回值。
发布于 2011-04-30 04:56:03
正如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);https://stackoverflow.com/questions/5835354
复制相似问题