YUI自定义事件和同步操作

问题描述 投票:0回答:1

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

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

我的问题涉及第三种方法,即我赞成的方法。我喜欢这样的事实:我的处理程序只通过抛出的事件连接,并且AJAX调用可以同时发生。我想知道的是,还有其他人以这种方式使用过这个模块吗?我可以期待什么样的陷阱?我担心我可能会为自己的竞争状况做好准备 - 我该怎样才能减轻这种情况?最后,对于任何读过这篇文章的人来说,还有更好的方法吗?我的清单是非详尽的,还是设计存在根本缺陷?建设性的批评和评论非常受欢迎。

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

php javascript events yui
1个回答
0
投票

你没有说明你有什么服务器端?我个人赞成备选方案2有几个实际的原因。

  1. 跨浏览器意味着支持IE和IE只允许2个未完成的请求到服务器。我会避免以这种方式使用它们,它可以导致明显的浏览器锁定,不像使用同步请求那么严重但仍然非常糟糕。
  2. 通常这样的请求将运行使用某种会话的服务器端代码,这反过来倾向于将请求依次限制为顺序处理,因此不能实现期望的性能增益。

你需要两个结果,因此需求是在它们之间创建耦合,如果你编写一个这样的代码,可选地链接到另一个是它的设计的一部分,它知道具体应该解耦的原因。

© www.soinside.com 2019 - 2024. All rights reserved.