我有几个XHR请求,由Mootools Request类处理。此类提供了一些适当计时请求的选项。我在做什么:
当然,请求2& 3必须在1结束前等待。所以这些是在onComplete
事件处理程序中触发的。但是,Request类提供了处理多个XHR请求的选项。我的问题是关于这两个:
选项link
可以设置为chain
,以便“链接”它们,或者像Moo文档所述:
在请求运行时启动的任何调用都将被链接起来,并且会在当前请求一个接一个地完成后立即发生。
可以将选项async
设置为false
,以防止以后的请求执行。根据Moo文档:
如果设置为false,请求将是同步的,并在请求期间冻结浏览器。
除了浏览器冻结部分,有什么区别?我应该使用哪一个请求号码。 1?同步这样做是否更好,所以我确定在此期间没有其他任何东西执行?如何使用两者,这有什么意义吗?
答案 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)
链接的请求是异步的,当一个结束时它会触发第二个请求,依此类推,这样你就可以有几个请求,而不会同时阻塞所有请求的浏览器。
链式请求不会冻结您的浏览器。