【问题标题】:Actionscript 3, keeping track of multiple urlLoader and IOErrorEvents, how?Actionscript 3,跟踪多个 urlLoader 和 IOErrorEvents,如何?
【发布时间】:2017-11-03 20:38:27
【问题描述】:

我正在使用 urlLoader 加载一些远程内容,然后监听 Event.COMPLETE 和 IOErrorEvent.IO_ERROR。

当我收到 IOErrorEvent.IO_ERROR 时,我会重试原始 urlLoader 请求。

这一切都很好,但是我希望扩展以支持可能重叠的多个请求,有些出错,有些没有。因此,我需要一种方法来告诉 IOErrorEvent.IO_ERROR 调用的函数哪个请求有错误。

我在想,如果我可以包含一个请求 ID 号,这将是一个很好的解决方案。

IOErrorEvent.IO_ERROR 可以包含额外数据吗?

就解决这个问题而言,我可能在这里遗漏了一些明显的东西。

【问题讨论】:

  • OOP 解决方案:让它成为一个类。创建一个重新尝试加载给定 URL 直到成功的类。基本上,您需要它有 2 个接口:方法 .load(url:String):void 和完成事件(或回调)。现在创建该类的多个实例,每个需要加载的文件 1 个。
  • 每个Event 都有一个currentTarget 属性,该属性引用了您将侦听器附加到的对象。因此,在您的错误处理程序中,您可以通过 event.currentTarget 获得对 URL 加载器的引用

标签: actionscript-3 actionscript restful-architecture


【解决方案1】:

将所需数据附加到侦听器

urlLoader.addEventListener(IOErrorEvent.IO_ERROR, IOError(myData));

然后使用下面的返回函数

private function IOError(myData:String):Function {
    return function(event:IOErrorEvent):void {
        trace(myData);
    }
}

【讨论】:

  • 内存泄漏就是这样产生的。如果您打算这样做(大多数人会建议您不要这样做),您最好将弱标志传递给您的侦听器(addEventListener 的第五个参数),否则您将没有简单的方法将该侦听器删除到匿名函数。带有匿名函数的事件监听器很容易导致灾难
猜你喜欢
  • 1970-01-01
  • 2016-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
  • 2022-11-12
  • 1970-01-01
  • 2011-10-28
相关资源
最近更新 更多