Javascript HTTP同步请求阻止我的GIF在Chrome和IE中移动?

Javascript HTTP同步请求阻止我的GIF在Chrome和IE中移动?,javascript,google-chrome,xmlhttprequest,gif,Javascript,Google Chrome,Xmlhttprequest,Gif,在Firefox中,我有一个发生的同步请求(必须是同步的,否则以后的JS将无法正确运行),现在在XMLHttpReq函数中,它基本上会将DIV的一个内容更改为一个微小的加载徽标(转动cog),以便您可以看到进度。。。在FF中,这可以100%异步或同步。。。Chrome和IE没有这样的运气 有人能帮我解释一下原因吗?我猜这与他们禁用所有其他进程有关,但如果是这样的话,在这个原始XMLHttpReq加载之后,我如何才能让它工作或评估JS文件 同步调用会占用浏览器直到事务完成,因此建议不要使用 您应

在Firefox中,我有一个发生的同步请求(必须是同步的,否则以后的JS将无法正确运行),现在在XMLHttpReq函数中,它基本上会将DIV的一个内容更改为一个微小的加载徽标(转动cog),以便您可以看到进度。。。在FF中,这可以100%异步或同步。。。Chrome和IE没有这样的运气

有人能帮我解释一下原因吗?我猜这与他们禁用所有其他进程有关,但如果是这样的话,在这个原始XMLHttpReq加载之后,我如何才能让它工作或评估JS文件

同步调用会占用浏览器直到事务完成,因此建议不要使用

您应该查看异步调用的顺序。意思问题不在于你的异步调用,而在于你为什么
它必须是同步的,否则以后的JS将无法正确运行。在AJAX回调中设置
completed
变量非常简单,其他有问题的JS可以在执行前检查该变量。

旨在启用同步请求,而无需挂断浏览器

Frame(function(next){
    startImageRotation();
    next();
});
Frame(function(next){
    $.ajax('someUrl.api', {
        ...
        complete: next
    });
});
Frame(function(next, response){
    // do stuff with ajax response
});

其他评论者说,由于浏览器支持差,真正的同步AJAX请求基本上是无用的,这是正确的。js就是为了解决这个问题而设计的。祝您好运。

如果您没有包含相关代码,我们怎么可能提供帮助?解决方案通常是不使用同步请求。如果异步请求破坏了您的JavaScript,那么重构JavaScript@Ash通常的重构方法是将依赖于请求数据的所有代码放入“request finished”事件(或者从那里调用它)。为了便于处理,使用jQuery这样的框架可能是值得的。。。你必须决定是否值得为你想要的效果做这些。也许还有另一种方法可以让GIF保持旋转,但我想不出一个简单的方法。@jfriend00-正如你在下面看到的,我得到的答案是完美的,没有任何代码,我需要知道(正如我在问题中所说的)浏览器有什么行为,以及有没有办法解决这个问题。所以,如果你不能回答,请退后,我向那些理解我问题的人寻求帮助,而不是那些想进行毫无意义的争论的人。@jfriend00-它在几分钟内就解决了,所以我没有损失。也正如我说的,如果你不能回答问题而没有小争吵,请退后。干杯。谢谢你们两位或你们的回答,@vol7ron-请你们举一个如何进行AJAX回调的例子好吗?听起来这正是我需要的,谢谢!灰烬!:)Ash:回调已经内置到AJAX请求中。您应该在AJAX对象的
readystatechange
部分附加一个响应处理程序函数。函数应该检查返回消息的HTTP状态(例如,如果是
200
do something)。在
if
块中,您应该设置您的全局变量,或者调用其他JS函数/code谢谢您的帮助,在您的指导下,所有问题现在都解决了。我创建了一个用于运行AJAX的函数,并在AJAX查询完成后使用eval运行带有回调的代码:)再次感谢大家@Ash:你可能想打开另一个问题,或者进入调试/帮助论坛<代码>评估
是有用的,但也可能是危险的,这取决于你在做什么。无论如何,您可能希望在别处定义一个函数,并从回调中调用该函数。