Я создал АС класса для использования в качестве модели данных, как показано здесь:Flex 4: Getter становится до того сеттер наборы
package
{
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.HTTPService;
public class Model
{
private var xmlService:HTTPService;
private var _xml:XML;
private var xmlChanged:Boolean = false;
public function Model()
{
}
public function loadXML(url:String):void
{
xmlService = new HTTPService();
if (!url)
xmlService.url = "DATAPOINTS.xml";
else
xmlService.url = url;
xmlService.resultFormat = "e4x";
xmlService.addEventListener(ResultEvent.RESULT, setXML);
xmlService.addEventListener(FaultEvent.FAULT, faultXML);
xmlService.send();
}
private function setXML(event:ResultEvent):void
{
xmlChanged = true;
this._xml = event.result as XML;
}
private function faultXML(event:FaultEvent):void
{
Alert.show("RAF data could not be loaded.");
}
public function get xml():XML
{
return _xml;
}
}
}
И в моем главном приложении, я начала приложение и вызвав функция loadXML, чтобы получить XML:
<fx:Script>
<![CDATA[
import mx.containers.Form;
import mx.containers.FormItem;
import mx.containers.VBox;
import mx.controls.Alert;
import mx.controls.Button;
import mx.controls.Label;
import mx.controls.Text;
import mx.controls.TextInput;
import spark.components.NavigatorContent;
private function init():void
{
var model:Model = new Model();
model.loadXML(null);
//the following line executes before model.loadXML has finished...
var xml:XML = model.xml;
}
]]>
</fx:Script>
Проблема у меня в том, что функция добытчик работает, прежде чем loadXML закончил, так что XML varible в моем главном приложении появляется неопределенными в трассировки стека. В частности, функция loadXML называется ResultEvent.RESULT, а затем перескакивает на setXML и т. Д., Код в основном приложении продолжает выполняться, а loadXML ждет результата, поэтому getter в главном приложении (var xml: XML = model. xml;) выполняется до того, как переменная была определена setXML.
Как разместить условие где-нибудь, которое сообщает получателю, что до завершения функции loadXML() до запуска?
Вы хотите использовать токен Async – phwd