Javascript 为什么在执行ajax请求时我的页面会锁定?
其思想是生成一堆缩略图,而不会导致服务器超时。因此,我使用jQuery使用ajax一个接一个地完成这项工作 我有一个JavaScript循环,通过一组文件名运行,并要求服务器为每个文件生成一个图像。在这种情况下,大约需要300多个文件 我运行我的文件并使用一个单独的函数来执行ajax请求。顶部循环希望显示当前正在处理的文件。但是当顶部循环运行时,页面显示为挂起。为什么?(如您所见,我试图在调用ajax之前等待一秒钟,但这并没有奏效。)Javascript 为什么在执行ajax请求时我的页面会锁定?,javascript,jquery,background-process,Javascript,Jquery,Background Process,其思想是生成一堆缩略图,而不会导致服务器超时。因此,我使用jQuery使用ajax一个接一个地完成这项工作 我有一个JavaScript循环,通过一组文件名运行,并要求服务器为每个文件生成一个图像。在这种情况下,大约需要300多个文件 我运行我的文件并使用一个单独的函数来执行ajax请求。顶部循环希望显示当前正在处理的文件。但是当顶部循环运行时,页面显示为挂起。为什么?(如您所见,我试图在调用ajax之前等待一秒钟,但这并没有奏效。) 函数mkImgAll(){ $.ajaxSetup({asy
函数mkImgAll(){
$.ajaxSetup({async:true});
var files=$('.files');
debugClear();
对于(i=0;i 您的请求不是异步的。您应该将async设置为true,因为jquery 1.7!不推荐使用async:false!我会尝试使用setTimeout调用调试…很长时间,但您可以尝试以下方法:
if (debug) {
var dummy = $("#debugMessage").append("<xmp>"+say+"</xmp>").get(0).offsetLeft;
}
if(调试){
var dummy=$(“#调试消息”).append(“+say+”).get(0).offsetLeft;
}
这应该会在浏览器锁定到sleep()之前强制刷新页面。对于该btw,最好使用setTimeout()
而不是sleep()
,除非您的循环确实必须在那里暂停。实际上从1.8开始就不推荐了;尽管我不同意这个决定=Xstill,因为jquery这么说,它将挂起页面;)
function debugSay(say) {
if(debug) {
$("#debugMessage").append("<xmp>"+say+"</xmp>");
}
}
$.ajax({
....
async: false,
if (debug) {
var dummy = $("#debugMessage").append("<xmp>"+say+"</xmp>").get(0).offsetLeft;
}