Javascript JS主干加载映像
我有一个正在运行的应用程序,它在从服务器获取数据时显示“加载轮” 所有这些都可以在Firefox中正常工作,而不是在Chrome中 在chrome中,我只能在应用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
断点后才能看到加载轮
请求需要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,但在以后的写作中,我将确保使用回调。再次感谢。