我被迫使用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
吗?
答案 0 :(得分:3)
getXmlWebpage函数不会阻止等待service.send返回。您无法从此函数返回预期值。而是使用onResult回调成可以发布和处理结果的东西。