Javascript JS主干加载映像

Javascript JS主干加载映像,javascript,jquery,firefox,google-chrome-devtools,Javascript,Jquery,Firefox,Google Chrome Devtools,我有一个正在运行的应用程序,它在从服务器获取数据时显示“加载轮” 所有这些都可以在Firefox中正常工作,而不是在Chrome中 在chrome中,我只能在应用断点后才能看到加载轮 请求需要3-4秒才能完成。没有断点,我看不到加载轮 我有这两个jquery包装器 hideLoadingImage = function() { $("#loading").hide(); }; showLoadingImage = function() { $("#loading").s

我有一个正在运行的应用程序,它在从服务器获取数据时显示“加载轮”

所有这些都可以在Firefox中正常工作,而不是在Chrome中

在chrome中,我只能在应用
断点后才能看到加载轮

请求需要3-4秒才能完成。没有断点,我看不到加载轮

我有这两个jquery包装器

hideLoadingImage = function() {
    $("#loading").hide();
  };

  showLoadingImage = function() {
    $("#loading").show();
  };
所以我把它叫做-

myfunc: function(event){
showLoadingImage();
         TASK TO PERFORM --->
         new_model = new FormModel();
         new_model.url = model_url;
         new_model.fetch({ async: false });
         <---------
hideLoadingImage();
}
myfunc:函数(事件){
showLoadingImage();
要执行的任务--->
new_model=new FormModel();
new_model.url=model_url;
新的_model.fetch({async:false});

主干模型.fetch委托到jQuery.ajax。jQuery 1.8及更高版本中不推荐使用
async:false

[…]从jQuery1.8开始,对jqXHR($.Deferred)使用async:false 已弃用;您必须使用成功/错误/完成回调 选项,而不是jqXHR对象的相应方法,例如 作为jqXHR.done()或不推荐使用的jqXHR.success()

您应该修改脚本以异步执行调用,并将
hideLoadingImage
移动到回调中

new_model.fetch({
success: function(){
        hideLoadingImage();
    }
});

这样,当请求仍在进行时,它将等待直到收到调用hide的响应,而不是隐藏。

有点晚,但我明白了这一点

如果有误解,请告诉我

Chrome正在更改元素样式,但网络请求阻止了“回流”,而mozilla UI线程不会干扰网络,因此它在mozilla中工作

我能找到的解决方案-

  • 成功更改DOM后使用setTimeout
  • 不要使用async:false,应该使用success、failure回调

  • 任务中要执行的是什么
    ?它是否正在运行对服务器的异步调用?如果是,则在show之后立即调用hide,以便控制盘迅速消失。是的,它正在进行
    异步:false
    调用。问题已更新。Thnakstrid了这一点,但它正在与firefox一起工作。我观察到的是showLoadingImage()正在执行,但样式没有立即反映出来,因为当我不调用hideLoadingImage时,它会在获取后显示加载轮。奇怪。加载分区中有什么HTML?可能您显示的gif只是需要很长时间才能呈现…您的回答很有帮助,谢谢,因为代码库很大,我不打算重新分解。我将使用setTimeout,但在以后的写作中,我将确保使用回调。再次感谢。