gpt4 book ai didi

language-agnostic - 异步加载/错误处理

转载 作者:行者123 更新时间:2023-12-03 07:51:38 24 4
gpt4 key购买 nike

假设我有一堆对象(例如矩阵中的缩略图),我需要通过网络 (HTTP) 为所有这些对象加载一些数据文件。因此,每个缩略图都有缩略图本身和一个 xml 文件。

从 IO 错误到错误的 URL 再到格式错误的 XML 等等,都会出现很多问题。问题是组织所有这些的最好/最优雅/最健壮的方式是什么。我通常最终做的是有一个负载管理器告诉
子对象开始加载,然后监视加载。子对象具有 IO 错误和 HTTP 状态事件的监听器。当所有的 child 都加载了所有东西(有一些可能的失败)时,就完成了一些事情(显示缩略图或其他)。

我在想必须有更好的方法来做到这一点,这将使我可以使用 throw发生错误时的子句。 Throwing来自听众的东西当然不会有什么好处。那么该怎么办。在子对象中有一个本地标志,如果出现故障或什么会中止?

我正在使用 AS3,但对于其他语言,问题应该几乎相同,至少对于面向对象的语言。

为了清楚起见,我不是在寻找任何程序代码,只是关于设计模式的一般想法。我还意识到,由于异步加载,我至少在子对象中与事件处理相关联。

最佳答案

我使用一个能够处理各种异步操作的“队列”包。好消息是您可以嵌套这些操作(复合模式)并轻松创建相当复杂的东西。如果事件发生,您可以在它们“在队列树中冒泡”时从根处捕获它们,或者直接在它们起源的地方捕获它们,具体取决于您添加的监听器。

interface Qable extends IEventDispatcher {
function start()
function stop()
}
interface Q extends Qable {
function add(item:Qable):Q
function remove(item:Qable):Q
...
}

var q1: Q = new Q
q1.add(new Qable(...))
q1.add(new Qable(...))

var q : Q = new Q
q.addEventListener(Event.COMPLETE, onComplete)
q.addEventListener(Event.ERROR, onError)
q.add(new Qable(...))
q.add(new Qable(...)).addEventListener(Event.Error, onItemXError)
q.add(m1)

q.start()

关于language-agnostic - 异步加载/错误处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2064465/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com