Thank you very much Harb, I will study your examples this afternoon.

hiedra

-----Mensaje original-----
De: Harbs <harbs.li...@gmail.com> 
Enviado el: jueves, 2 de diciembre de 2021 11:52
Para: dev@royale.apache.org
Asunto: Re: IAsyncTask ¿any example?

And here’s an example I’m using in production which runs more than one task in 
parallel. As you can see, it’s very easy to use:

public function embedFonts(render:Function):void{
        if(fontsEmbedded()){
                render();
        } else {
                var tasks:Array = [];
                var font:FontVO = getAppliedFont();
                if(!font.embedded){
                        tasks.push(new LoadFontTask(font));
                }
                font = getBulletFont();
                if(font && !font.embedded){
                        tasks.push(new LoadFontTask(font));
                }
                var task:CompoundAsyncTask = new CompoundAsyncTask(tasks);
                task.done(function(task:AsyncTask):void{
                        if(task.completed){
                                // we're good
                                render();
                        } else {
                                // status is "failed" -- we're failing silently
                        }
                });
                task.run();
        }
        
}

And the LoadFontTask class looks like this:

  public class LoadFontTask extends AsyncTask
  {
    public function LoadFontTask(font:FontVO)
    {
      super();
      this.font = font;
    }
    private var font:FontVO;
    override public function run(data:Object = null):void{
      var fp:FontProxy = getProxy(FontProxy.NAME) as FontProxy;
      fp.loadNow(font,fontLoadDone);
    }
    private function fontLoadDone():void{
      if(font.embedded){
        complete();
      } else {
        fail();
      }
    }
  }

> On Dec 2, 2021, at 12:39 PM, Harbs <harbs.li...@gmail.com> wrote:
> 
> var task: HttpRequestTask = new HttpRequestTask(); task.url = 
> “https://foobaz.com/myapi”; 
> task.done(function(taskReturned:HttpRequestTask):void{
>       trace(“task is the same and taskReturned: “ + task == taskReturned);// 
> you get the task back in the done callback
>       trace(task.status);// will be either AsyncTask.COMPLETE, 
> AsyncTask.FAILED or AsyncTask.CANCELED
>       if(task.completed){
>               trace(task.httpResult);
>               trace(task.httpStatus);
>       } else if(task.failed){// it failed you can get the status to know why
>               trace(task.httpStatus);
>    } else {
>       // The only other possibility is it was canceled
>       if(task.status == AsyncTask.CANCELED){
>               trace("your task was canceled in the middle!");
>       } else {
>                       throw new Error("This should be impossible. Tasks 
> either complete or fail");
>       }
>    }
> });
> // you need to run it or nothing happens...
> task.run();
> 
>> On Dec 2, 2021, at 11:10 AM, Maria Jose Esteve <mjest...@iest.com> wrote:
>> 
>> Hello,
>> @Harb, is there an example of how to use AsyncTask? I would like to 
>> experiment with it, I think I can use it in some of the projects and 
>> then include it in the examples project that I maintain [1]
>> 
>> [1] https://github.com/mjesteve/royale-examples-community
>> 
>> Hiedra.
>> 
> 

Reply via email to