javascript方法排序:任务结束

javascript方法排序:任务结束,javascript,sorting,methods,Javascript,Sorting,Methods,我通过array.sort()方法对JavaScript中的一个大数组进行排序 调用sort()时,我想显示一个加载程序gif,以显示脚本正在运行 然后我想隐藏这个加载器并抛出一个函数:当任务完成时 我们如何通过sort()方法知道新数组何时可用 // This will sort by Year function sortByYear(a, b){ var aYear = parseFloat(a.year) var bYear = parseFloat(b.year)

我通过array.sort()方法对JavaScript中的一个大数组进行排序

调用sort()时,我想显示一个加载程序gif,以显示脚本正在运行

然后我想隐藏这个加载器并抛出一个函数:当任务完成时

我们如何通过sort()方法知道新数组何时可用

// This will sort by Year
function sortByYear(a, b){

    var aYear = parseFloat(a.year)
    var bYear = parseFloat(b.year)

    if (aYear < bYear) {
      return 1;
    } else if (aYear > bYear) {
      return -1;
    } else {
      return 0;
    }

}
//这将按年份排序
函数sortByYear(a,b){
var aYear=parseFloat(每年)
var bYear=parseFloat(b.年)
如果(一年<一年){
返回1;
}否则如果(一年>一年){
返回-1;
}否则{
返回0;
}
}

我猜这是一个同步方法,因此当方法返回时,数组可用

你可以这样做:

$("#loadingGIF").show();

var sortedArray = sourceArray.sort(...);

$("#loadingGIF").hide();
但这不起作用,因为浏览器在方法完成之前不会刷新屏幕。你应该这样做:

$("#loadingGIF").show();

// wait a few milliseconds, just enought to the browser process next requests,
// like drawing the screen
setTimeout(executeSort, 100); 


function executeSort()
{
    var sortedArray = sourceArray.sort(...);

    $("#loadingGIF").hide();
}

仅供参考,gif动画在执行JS函数时停止。我认为sort()方法是同步的。只要显示加载程序、排序和隐藏加载程序,它就会工作。哦,Teemu是对的,在JS执行过程中视口被冻结。我刚刚偶然发现: