首页 > 解决方案 > TypeScript - 等到 array.sort 完成

问题描述

我必须显示加载屏幕,直到在 Angular 中对数组进行排序。我已经使用以下代码来执行此操作。

this.isSorting = true;
this.array = this.array.sort((a,b) => a.totlaTime - b.totalTime);
this.isSorting = false;

但一旦成为isSorting真的,它就变成了假的。我相信这是因为该.sort功能是异步的。我怎样才能等待单元排序和数组被填充isSorting = false

标签: angulartypescript

解决方案


JavaScript 规范保证 Array#sort 是同步的

请注意,使用的排序是实现定义的(实际上因实现而异),也不能保证它是稳定的。

Js 排序算法完成处理条目的速度非常快。尝试在不将 issorting 设置为 false 的情况下编写代码,以便查看它是否正确。为了查看结果,了解当您想要对更长的列表进行排序时它将如何表现,这可能需要一些时间以这种方式修改代码

this.isSorting = true;
this.array = this.array.sort((a,b) => a.totlaTime - b.totalTime);
// This section will wait for 3 sec before settings sorting to false
setTimeout(()=>{ 
  this.isSorting = false;
 }, 3000);

推荐阅读