运行耗时10秒左右的程序,实现提示用户“请稍等”

问题描述

点击开始分析之后,去数据库查询数据,可能要10s的时间。我在页面上加了一个div,div里面有提示用户请等待和一张动态图片,div的dispaly属性为none;我点击开始分析之后,把div的dispaly属性设为block,然后去执行耗时很长的程序,执行完之后又把div的dispaly属性设为none。我点了按钮之后,页面就像卡死了一样,什么都点不了,提示用户等待的信息也没有出来,过了10s程序执行完了,页面才从卡死的状态恢复回来。更神奇的是,我在开始分析前加一个弹出确定/取消框,把提示等待信息放在提示框外面,提示信息都可以正常显示,一点确定,连动态图片都卡住不动了。请教大神们,我想让div显示出来,问题出在哪里?html代码:<divid="Waiting"style="display:none;width:99%;height:99%;float:left;z-index:11;position:absolute;top:30%;right:0px;left:10%;bottom:0px;vertical-align:middle;text-align:center;"><imgid="Waiting_Img"src="../../../../images/Loading2.gif"/><br><spanid="Waiting_Span"style="color:blue;font-size:14px;">请稍等</span></div>

JS代码:document.getElementById("Waiting").style.display="block";if(confirm("核对信息无误,确定开始分析?")){//执行耗时程序的代码……………………………………}document.getElementById("Waiting").style.display="none";

解决方案

解决方案二:
耗时多少秒,你无法预知,还是一视同仁,都显示一个等待界面吧,大不了一闪而过
解决方案三:
耗时无法预知“都显示一个等待界面吧”,意思是跳转到同一个页面吗,那样不行,不能刷新整个页面的。
解决方案四:
。。我都忘了怎么写这样的CSS了
解决方案五:
引用3楼jiaoshiyao的回复:

。。我都忘了怎么写这样的CSS了

我也忘记了
解决方案六:
你是用线程来处理还是直接事件来处理呀?如果不是线程你一定弹不出窗口的,直接页面卡死在那的!
解决方案七:
可以用AJAX请求数据发送请求之前显示遮盖层当AJAX请求成功后再在success里面将遮盖层隐藏掉
解决方案八:
引用5楼jrl5365的回复:

你是用线程来处理还是直接事件来处理呀?如果不是线程你一定弹不出窗口的,直接页面卡死在那的!

我在事件里面处理的。多线程。。。。。。。没用过,有没有什么好的例子。
解决方案九:
引用6楼kxm_2012的回复:

可以用AJAX请求数据发送请求之前显示遮盖层当AJAX请求成功后再在success里面将遮盖层隐藏掉

我就是用的ajaxdocument.getElementById("Waiting").style.display="block";if(confirm("核对信息无误,确定开始分析?")){mygrid.forEachRow(function(id){varResult=Techrecord.Analysis(id);//Techrecord是一个js类,Analysis方法就是用ajax去后台执行查询mygrid.cells(id,5).setValue(Result);});}document.getElementById("Waiting").style.display="none";

解决方案十:
你要把ajax设成异步,然后在ajax的成功或失败回调函数里添加上隐藏loading框的代码
解决方案十一:
向大家学习了

时间: 2024-10-26 05:47:41

运行耗时10秒左右的程序,实现提示用户“请稍等”的相关文章

计时器-flash程序运行了几秒后似乎程序被直接重置了

问题描述 flash程序运行了几秒后似乎程序被直接重置了 import flash.utils.Timer;import flash.events.TimerEvent;var timer:Timer = new Timer(100); //100毫秒一跳var i:Number = 0;var flag:Number = 0;bangle.y=100;bangle.x=100; background.stop();timer.addEventListener(TimerEvent.TIMERr

visual studio-使用VS打包程序后 安装exe后启动页面需要10秒才能显示页面,如果让页面一打开就有

问题描述 使用VS打包程序后 安装exe后启动页面需要10秒才能显示页面,如果让页面一打开就有 解决方案 这10秒一定是进行了读取数据库等耗时的操作,建议检查一下程序中有哪些操作耗时,向将该功能注释掉试一下是不是启动快了. 解决方案二: 这个应该是网页加载慢.一般不要程序一启动就做耗时操作.这样用户体验不好. 解决方案三: 网络问题 只能开心等待了 解决方案四: 给你个思路,软件开启的时候显示一张图片之类的,然后另开一个进程在主窗口加载页面,主窗口不显示,但是实例已经创建出来了,等页面加载完把主

支持10秒自毁的新芯片

本文讲的是 支持10秒自毁的新芯片,施乐帕克研究中心的工程师们开发出了一种可通过命令进行自毁的原型芯片. 这种不可思议的集成电路可用于加密密钥的存储之类的应用程序.芯片是在大猩猩玻璃衬底上制作的,能够根据需要粉碎成成千上万块很小的几乎不可能进行重组的碎片. 人们对于大猩猩玻璃的熟识还是其做为智能手机坚硬触摸屏的普遍使用.美国国防部先进研究项目局(DARPA)为此项研究投入高达200百万美金. 施乐帕克研究中心资深科学家戈里·怀廷说,"我们确实想造出一个运行非常快速且与商业电子相兼容的系统.&qu

c# winform 最小化长时间不动,再打开点刷新会卡住10秒左右,后面就不会再卡了

问题描述 c#winform开发的程序,最小化长时间不动,再打开点刷新会卡住10秒左右,后面就不会再卡了,这是什么原因?有人说是因为软件睡眠了,再打开会有个重新编译的过程,是不是这个原因呢,该怎么解决,求大神帮忙解答. 解决方案 解决方案二:都春天了,还睡眠个屁啊.超过10毫秒的睡眠都是假睡,可能的软件在走私.解决方案三:引用1楼sp1234的回复: 都春天了,还睡眠个屁啊.超过10毫秒的睡眠都是假睡,可能的软件在走私. 走私,啥意思呢解决方案四:走私嘛,就是非法的做事噻解决方案五:大家都没碰到

Python中统计函数运行耗时的方法

  本文实例讲述了Python中统计函数运行耗时的方法.分享给大家供大家参考.具体实现方法如下: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 import time def time_me(fn): def _wrapper(*args, **kwargs): start = time.clock() fn(*args, **kwargs) print "%s cost %s second"%(fn.__name__,

.net网站打开速度很慢,要10秒,不知道什么原因!

问题描述 .net网站打开速度很慢,要10秒,不知道什么原因! 解决方案 解决方案二:简单点的,通过在文件加日志,看日志判断是哪里耗时最长,当然可以的话,用VS进行调试也是可以的次复杂点的,用第三方工具抓IIS里面的运行时间,可惜以前都记得好几个名字的,现在忘了复杂点的,抓dump用windbg进行分析解决方案三:看F12哪个请求速度慢,打日志看服务端处理速度解决方案四:速度慢的原因有很多,这里也不可能凭空猜测.首先,可能是你加载数据过多,其次,代码内部问题,导致你重复调用某些方法,也可能导致比

Windows 7系统将运行Direct3D 10和10.1

由微软公司所制定的3D规格界面,与Windows 95 和Windows NT操作系统兼容性好,可绕过图形显示接口(GDI)直接进行支持该API的各种硬件的底层操作,大大提高了游戏的运行速度. Direct 3D是基于微软的通用对象模式COM(Common Object Mode)的3D图形API.它是由微软(Microsoft)一手树立的3D API规范,微软公司拥有该库版权,它所有的语法定义包含在微软提供的程序开发组件的帮助文件.源代码中.Direct3D是微软公司DirectX SDK集成

极速秒杀!新手10秒学会“双11”抢购

双11越来越近,许多电商纷纷降价,为促销吸尽眼球.很多朋友更是摩拳擦掌,要在此期间将心仪已久的宝贝淘到手.然而双11虽好,允许用户抢购的时间毕竟有限,如何能在有限的时间内,将心仪的宝贝统统搞到手,是每位朋友必须考虑的问题.为此,百度浏览器最近推出了"双11秒杀王",那么,它的表现究竟如何呢?小编这里就带大家体验一下.安装预约,异常简单要想让百度浏览器抢专版能发挥作用,首先得告诉它我们要抢什么,说得更霸气点,就是要提前预约.百度浏览器的预约过程非常简单,只需几秒就能完成..进入http:

用MFC的对话框载入摄像头并处理,运行接近10分钟后提示内存出错,指针都释放掉了。这是什么原因呀?

问题描述 用MFC的对话框载入摄像头并处理,运行接近10分钟后提示内存出错,指针都释放掉了.这是什么原因呀? 相关的代码: void CMFC_VedioDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 if(!pCapture) { pCapture = cvCaptureFromCAM(0); pFrame = cvQueryFrame(pCapture); drawToDC(pFrame, IDC_Open); } SetTimer(I