javascript - 函数没有立即执行

标签 javascript jquery

<分区>

我有一个函数 showLoading(),它通过附加一个类来显示微调器:

function showLoading(){
    //console.log("show loading");
    loading = true;
    $("body").addClass("loading");
}

我这样调用它:

Function heavyCrunch(){
    showLoading();

    <heavy crunching>

    hideLoading();
}

现在,每当我在某个需要 > 1 秒的重负载之前调用该函数时,它应该立即显示微调器,但它没有。事实上,它根本不显示。每当我单击触发 heavyCrunch() 函数的按钮时,它只会卡住一两秒钟,然后立即显示结果。微调器永远不会显示。为什么会这样?

我应该在 .after 回调中调用该函数还是什么?

最佳答案

当您的代码正在执行时,DOM 不会刷新。它一直等到结束。

如果您希望更改可见,则必须推迟执行:

function heavyCrunch(){
    showLoading();
    setTimeout(function(){

        <heavy crunching>

        hideLoading();
    }, 0);
}

请注意,在某些处理繁重的情况下,您可能希望释放浏览器的压力,让它有时间真正进行绘制。在这种情况下,您可以使用大于 0 的超时。

关于javascript - 函数没有立即执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30627884/

相关文章:

javascript - AngularJS如何获取范围内变量的值

javascript - 从数组中查找对象索引

javascript - 使用 jquery 自定义自动完成

javascript - 检查表单提交文件的时间

javascript - 获取类的值

asp.net - 如何从 jquery 访问 ASP.NET 下拉框

php - 与 MySQL 的连接速度更快?

javascript - 在 jQuery 按键事件上获取输入文本值

javascript - 用户交互后取消滚动

javascript - 游戏结束时停止 JavaScript