URLLoaderタイムアウトに対処する

ここしばらくネットにまともにつながらない。

そのせいでFlexアプリでURLLoader#load()でしょっちゅうタイムアウトする。その時ストリームエラーが投げられてくる。

このエラーは非同期で起きるのでtry/catchでは対処できない。イベントリスナを使うことになる。

loader.addEventListener(IOErrorEvent.IO_ERROR, catchIOError);
function catchIOError(event:IOErrorEvent){
 エラー処理
}


元:Matt Maher - Personal Training, Nutrition Coaching


タイムアウトを考えるならURLLoaderWithTimeoutを使わせてもらおう。タイムアウト時間を指定できる。
http://svn.rails2u.com/as3rails2u/trunk/src/com/rails2u/net/URLLoaderWithTimeout.as


ただこれを使っても、親クラスのURLLoaderのIOErrorイベントは投げられる。つまり、URLLoaderWithTimeout#loadWithTimeout()では、このメソッドで指定した時間後のタイムアウトとデフォルトのタイムアウトの両方でIOErrorイベントが起きるので注意。例えばIOError用のハンドラの中でremoveEventListenerをすると2回目のイベントがハンドルされない。