运行与以下代码相当的代码时,我得到“主线程上的同步XMLHttpRequest已被弃用”:
$window.bind('scroll', function () {
if ($(this).scrollTop() > 0 && !requestProcessed) {
requestProcessed = true;
$.ajax(options);
}
});
选项是这样的:
var options = {
error: function () {...},
success: function () {...},
type: "GET",
url: "/home/async-contents"
};
我的理解是Ajax请求默认为async
。设置async: true
无效。为什么请求仍然可以同步运行?
答案 0 :(得分:0)
在success
函数中,我将响应附加到正文。响应的<script>
不异步。警告不是因为原始请求是同步运行的,而是因为响应中的脚本标记被附加到正文,这是一个阻塞操作。
将async
属性添加到该脚本使其无阻塞,我停止接收警告。但是,重要的是要注意,任意标记脚本async
会导致竞争条件,并且应该根据具体情况进行。