为什么我不能在函数内修改这个变量?

时间:2011-01-30 22:39:46

标签: actionscript-3 function actionscript scope

我被迫使用ActionScript / Adob​​e Air。来自Java背景。我无法弄清楚我在这里做错了什么,也许有人可以提供帮助。基本上我希望函数返回它提取的XMLNode

public function getXmlWebpage(address:String):XMLNode {
            var service:HTTPService = new HTTPService();
            var xmlResult : XMLNode = null;

            service.method = "GET";
            service.url = address;
            service.resultFormat = HTTPService.RESULT_FORMAT_XML;

            function onResult(result:ResultEvent):void{
                trace("status code " + result.statusCode);
                var node : XMLNode = result.result as XMLNode;
                trace("node has NS URI " + node.namespaceURI);
                xmlResult = node;
            }

            function onFail(event:FaultEvent):void{
                trace("fail function of getXmlWebpage called.");
                Alert.show("error communicating with host " + event.fault.toString());
            }

            service.addEventListener(FaultEvent.FAULT, onFail);
            service.addEventListener(ResultEvent.RESULT, onResult);

            service.send(null);

            trace("return value will be " + xmlResult)

            return xmlResult;
        }

但是日志说(是的,按顺序):

return value will be null
status code 200
node has NS URI http://www.w3.org/2005/Atom

我没有到这里来的?我无法使用xmlResult修改onResult吗?

1 个答案:

答案 0 :(得分:3)

getXmlWebpage函数不会阻止等待service.send返回。您无法从此函数返回预期值。而是使用onResult回调成可以发布和处理结果的东西。