浏览器在javascript函数完成执行之前不显示消息

时间:2014-08-13 12:28:38

标签: javascript jquery

我创建了一个插件来显示DOM元素中的忙碌指示符,比如正文或div,但我对下面的情况有疑问

$("body").BusyIndicator(true,"Please wait")

validateAndSubmitForm(); 

$("body").BusyIndicator(true,"Saving") 

问题是第一条消息"请稍候" 未显示,功能 validateAndSubmitForm 似乎会阻止浏览器,以及何时它已解锁,直接显示消息"正在保存"

有人知道如何确保在执行函数validateAndSubmitForm之前确实显示第一条消息?

1 个答案:

答案 0 :(得分:4)

浏览器有一个线程来解释javascript并更新界面。它不能同时做到这两点。您必须花一些时间访问浏览器,以便更新界面:

$("body").BusyIndicator(true,"Please wait");

setTimeout(function() {
    validateAndSubmitForm(); 

    $("body").BusyIndicator(true,"Saving");
}, 0);
定时器为0的

setTimeout告诉浏览器在能够更新界面之后尽快执行该功能(并做一些其他的事情,如处理用户输入,......)