Почему я не могу изменить эту переменную внутри функции? - PullRequest
0 голосов
/ 31 января 2011

Я вынужден работать с ActionScript / Adobe 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 Ответ

3 голосов
/ 31 января 2011

функция getXmlWebpage не будет блокировать ожидание возврата service.send.Вы не можете вернуть предполагаемое значение из этой функции.Вместо этого используйте onResult для обратного вызова чего-то, что может публиковать и обрабатывать результат.

...