jquery confirm 的问题(执行顺序)

freeheartsz 2017-05-22 07:39:58
最近遇到一个问题,水平有限想不出是什么原因,也试了很多方法。
请教大家指导一下。


$.messager.confirm('提示','确定要上传吗?上传前请先核对无误。',function(r){
if (r){
a();
}
}
</script>

现在遇到的情况是,当我点击确认后,confirm那个对话框不会消失,一直要等到a()这个函数执行后才消失。
因为a()这个函数执行时间较长,所以就会出现点击confirm确认按钮后,confirm对话框一直就在,就像网页假死一样了。
...全文
801 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-05-22
  • 打赏
  • 举报
回复
引用 2 楼 freeheartsz 的回复:
这是什么原因呢? 其实我那个a()也就5、6秒而已 但那个confirm窗口就是你点击了“确认”也不会消失 硬是要等到a()执行完后才消失 郁闷
因为a()函数和对话框消失的代码是处于同一个程序线程内的。而浏览器在一个程序线程内是不会重新渲染页面的,就是说对页面的更改要等到当前程序线程执行结束后用户才能看到。
freeheartsz 2017-05-22
  • 打赏
  • 举报
回复
这是什么原因呢? 其实我那个a()也就5、6秒而已 但那个confirm窗口就是你点击了“确认”也不会消失 硬是要等到a()执行完后才消失 郁闷
天际的海浪 2017-05-22
  • 打赏
  • 举报
回复
可以用setTimeout延时执行,让对话框先消失,再执行a()这个函数, 不过a()函数如果执行时间太长,还是会让网页假死。
$.messager.confirm('提示','确定要上传吗?上传前请先核对无误。',function(r){
	if (r){
		setTimeout(function() {
			a();
		}, 1);
	}
}

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧