Как мне работать с Asynctokens в классах Actionscript
Вот мой код:
public class Schem
{
public var info:String="";
private var ro:RemoteObject = new RemoteObject("Hibernatetest");
public function Schem()
{
ro.endpoint = "http://jesus/blazeds/messagebroker/amf";
}
public function loadCurrentSchem():void
{
var token:AsyncToken = ro.getCells();
token.addResponder(new AsyncResponder(onResult,onFault));
info = info + "Loader Called ...";
}
private function onResult(event:ResultEvent,token:Object):void {
var cellList:ArrayCollection = event.result as ArrayCollection;
info = info + "Resulthandler Called";
}
private function onFault(event:FaultEvent,token:Object):void
{
}
//Eventhandlers
//Getters, Setters
}
Изучив информационную строку, я обнаружил, что класс не достигает Resulthanlder, когда я вызываю loadCurrentSchem(). Это почему?
1 ответ
Решение
Прежде всего, я не вижу, где у вас есть преимущества асинхронного токена? Асинхронный токен - это шаблон для инкапсуляции всей информации об одном запросе и его состоянии в одном объекте. Вы можете прочитать больше здесь.
В вашем случае все, что вам нужно, это получить результат запроса. Лучший способ сделать это - использовать RemoteObject
события (см. документацию). Таким образом, код будет выглядеть следующим образом:
public class Schem
{
public var info:String="";
private var ro:RemoteObject;
public function Schem()
{
ro = new RemoteObject("Hibernatetest");
ro.endpoint = "http://jesus/blazeds/messagebroker/amf";
ro.addEventListener(ResultEvent.RESULT, onResult);
ro.addEventListener(FaultEvent.FAULT, onFault);
}
public function loadCurrentSchem():void
{
ro.getCells();
info = info + "Loader Called ...";
}
private function onResult(event:ResultEvent):void {
var cellList:ArrayCollection = event.result as ArrayCollection;
info = info + "Resulthandler Called";
}
private function onFault(event:FaultEvent):void
{
info = info + "Errorhandler Called";
}
//Eventhandlers
//Getters, Setters
}