gpt4 book ai didi

javascript - 如何在加载 DOM 后停止微调器

转载 作者:行者123 更新时间:2023-11-30 20:58:49 27 4
gpt4 key购买 nike

我正在加载大量数据,即使在收到数据后,似乎也需要几秒钟来绘制页面。

我正在简化下面的代码,所以请原谅这个玩具示例中的任何语法错误。我的 angularjs 代码的结构或多或少是这样的

$scope.isLoading = true;
$http.get(url)
.then(function(resp) {
$scope.mydata = resp.data;
})
.finally(function() {
$scope.isLoading = false;
})

我的 html 是

<div class="spinner" ng-show="isLoading">
...
<!-- lots of data and complex DOM manipulation below -->

我也试过

<div class="spinner" ng-hide="mydata">
...
<!-- lots of data and complex DOM manipulation below -->

在这两种情况下,我都会得到一个微调器,然后微调器消失,然后几秒钟过去,数据最终显示出来。如果数据较小,则延迟不太明显。

当我查看浏览器的开发人员工具时,收到数据并且微调器立即消失。然后在页面最终加载之前发生多秒延迟。所以我怀疑浏览器正在尝试编写 DOM

我想缩短微调器消失和页面出现之间的延迟。

在编写完所有 DOM 后是否会调用某种 Hook /回调?

最佳答案

由于视觉延迟是由 DOM 在摘要上同步更新并阻塞主线程这一事实引起的,因此应该至少推迟 spinner 移除一个 tick:

$http.get(url)
.then(function(resp) {
$scope.mydata = resp.data;
})
.finally(function() {
return $timeout(function () {
$scope.isLoading = false;
})
})

超时延迟可以增加到非零值(例如 20),具体取决于导致卡住的应用程序部分的工作方式。由 $timeout 引起的新摘要可能会导致新的卡住,因此该问题可能应该通过优化来解决。

关于javascript - 如何在加载 DOM 后停止微调器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47340695/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com