Mootools XHR请求:同步和/或链接?

时间:2012-02-14 15:39:19

标签: javascript xmlhttprequest mootools

我有几个XHR请求,由Mootools Request类处理。此类提供了一些适当计时请求的选项。我在做什么:

  1. XHR:发布表单数据
  2. XHR:刷新主窗格
  3. XHR:刷新子窗格
  4. 当然,请求2& 3必须在1结束前等待。所以这些是在onComplete事件处理程序中触发的。但是,Request类提供了处理多个XHR请求的选项。我的问题是关于这两个:

    1. 选项link可以设置为chain,以便“链接”它们,或者像Moo文档所述:

        

      在请求运行时启动的任何调用都将被链接起来,并且会在当前请求一个接一个地完成后立即发生。

    2. 可以将选项async设置为false,以防止以后的请求执行。根据Moo文​​档:

        

      如果设置为false,请求将是同步的,并在请求期间冻结浏览器。

    3. 除了浏览器冻结部分,有什么区别?我应该使用哪一个请求号码。 1?同步这样做是否更好,所以我确定在此期间没有其他任何东西执行?如何使用两者,这有什么意义吗?

2 个答案:

答案 0 :(得分:4)

好。 link:chain和async:false之间的区别很简单。

第一个公理 - 你重用你的请求实例而不是新的请求实例。即使你不是,也可以使用异步。例如,如果你有async: false,那么这段代码:

new Request({async:false}).send();

// this one below will not run until the UI thread has finished
new Request({async:false}).send();

// nor will this
somefunc();

如果你选择连锁店:

var req = new Request({link: "chain"});

req.send();
// this won't run until the previous request has completed:
req.send();
// this will run independently of the above and may finish first as
// they are not synchronous and this is a brand new instance.
new Request().send();

答案 1 :(得分:0)

链接的请求是异步的,当一个结束时它会触发第二个请求,依此类推,这样你就可以有几个请求,而不会同时阻塞所有请求的浏览器。

链式请求不会冻结您的浏览器。