代码之家  ›  专栏  ›  技术社区  ›  Jeremy DeGroot

YUI自定义事件和同时操作

  •  0
  • Jeremy DeGroot  · 技术社区  · 15 年前

    我正在开发一个JavaScript应用程序,它必须通过AJAX执行两个单独的检查。根据每次检查的结果,行为会有所不同。我感兴趣的案例是当两个检查都成功时。我已经确定了一些方法来做到这一点,我想从SO那里得到一些反馈,他们认为最好的方法是什么。

    1. 同步AJAX调用:这是我继承的,它已经不存在了。它会导致浏览器和系统锁定,尽管它允许您在单个执行线程中处理响应。
    2. 菊花链:进行AJAX调用以执行第一次检查,如果通过,则在第一次检查的回调中执行第二次检查。处理第二次检查,如果通过,我们就成功了。这是最简单的解决方案,但它会不必要地将我的两项检查结合起来。我还觉得序列化检查是不必要的,会降低性能。
    3. 自定义事件:使用YUI的 Event 模块和自定义事件实用程序,同时触发两个AJAX调用。为每个成功案例创建一个自定义事件,并让处理AJAX响应的回调为每个成功检查抛出相应的事件。然后,每个事件的处理程序都可以订阅另一个事件,如果抛出该事件,则表示我们已成功完成。

    我的问题与第三种方法有关,这是我喜欢的方法。我喜欢我的处理程序只通过抛出的事件连接,并且AJAX调用可以同时发生。我想知道的是,还有其他人以这种方式使用过这个模块吗?我能预料到什么样的陷阱?我担心我可能已经为自己设定了一个比赛条件——我怎样才能缓解这种情况?最后,对于读过这篇文章的人来说,有没有更好的方法?我的列表是否不完整,或者设计是否存在根本缺陷?建设性的批评和评论是非常受欢迎的。

    编辑:虽然服务器请求确实使用会话,但它们彼此无关,并且不写入会话数据,因此没有理由不在服务器上并行执行它们(除非PHP会话有一些限制,我不知道)。我们也会进行服务器端检查,但我们发现在某些重要事件之前,我们需要立即与服务器进行检查,以便在罕见的事件中通知用户发生了变化。

    1 回复  |  直到 5 年前
        1
  •  0
  •   AnthonyWJones    15 年前

    您没有说明您在服务器端拥有什么?就我个人而言,出于几个务实的原因,我倾向于选择2。

    您需要这两个结果,因此,如果您对其中一个进行编码,从而可以选择链接到另一个是其设计的一部分,那么需求将在它们之间创建一个耦合,并且它知道为什么应该足够去耦合。