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 <[email protected]> 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 <[email protected]> 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.
>>
>