Как мне работать с Asynctokens в классах Actionscript - PullRequest
0 голосов
/ 26 мая 2011

Вот мой код:

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 Ответ

0 голосов
/ 26 мая 2011

Прежде всего, я не вижу, где у вас есть преимущества асинхронного токена? Асинхронный токен - это шаблон для инкапсуляции всей информации об одном запросе и его состоянии в одном объекте. Вы можете прочитать больше здесь .

В вашем случае все, что вам нужно, это получить событие результата запроса. Лучший способ сделать это - использовать события 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
}
...