【问题标题】:Attaching an event listener to all URLRequest's将事件侦听器附加到所有 URLRequest 的
【发布时间】:2011-10-13 03:00:46
【问题描述】:

我们有一个 flex 应用程序,它连接到处理身份验证的代理服务器。如果身份验证超时,代理服务器将返回一个 json 格式的错误字符串。我想做的是检查每个 URLRequest 响应并检查是否有错误消息并将其显示在 flex 客户端中,然后重定向回登录屏幕。

所以我想知道是否可以以全局方式为所有 URLRequests 创建一个事件侦听器。无需搜索整个项目并向每个 URLRequest 添加一些方法。如果可能的话,有什么想法吗?

【问题讨论】:

    标签: apache-flex flash-builder flexbuilder flex4.5


    【解决方案1】:

    除非您只使用一项服务,否则无法设置全局 URLRequest 处理程序。如果我是您,我会更多地考虑通过使用委托来正确构建您的应用程序,并始终通过整个应用程序使用的特定服务检查结果。

    【讨论】:

    • 不幸的是,也许不出所料,它是一大堆继承的外包代码。重新架构几乎是不可能的
    • @RueTheWhirled 无论如何你都得改变它们......也许你应该利用这个机会稍微重构一下代码,并引入一个委托?
    【解决方案2】:

    J_A_X 有一些很好的建议,但我会更进一步。让我根据您提供的有限信息做一些假设。

    1. 服务分散在您的应用程序中,这意味着它们实际上嵌入在多个视图中。
    2. 如果您的所有服务都可以由同一个处理程序处理,那么您理论上只有一个服务,被复制了很多次。

    尽管您在 Adob​​e 示例中看到了显示其新服务生成代码的内容,但直接从视图调用服务是非常糟糕的做法,部分原因在于您所看到的问题——您最终可能会得到很多相同的服务代码散布在您的应用程序中。

    根据您的应用程序的紧密程度(相信我,我继承了一些非常讨厌的东西,所以我知道这说起来容易做起来难),您可能会发现最简单的方法是删除所有这些服务并通过让所有视图调度一个在顶层捕获的冒泡事件来替换它们。在顶层,您通过调用服务的 one 实例来响应该事件,该实例再次在 one 位置处理。

    您可以选择将单个服务包装在委托中,也可以不选择,但是一旦您的应用程序以服务与视图分离的方式进行架构设计,您就可以随时做出选择。

    【讨论】:

      【解决方案3】:

      您能否扩展类并在对象的构造函数中添加事件侦听器?我不喜欢这种方法,但它可以工作。

      您只需要搜索/替换整个项目。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多