我需要对大量的Javascript项进行排序,我正在使用sort
这样的函数:
var sorted_list = non_sorted.sort(function(a,b){
// Sort stuff here
});
我想做的是在sort
功能完成后调用函数。
是否有可能在sort
结束时添加回调函数来排序或触发事件?
答案 0 :(得分:13)
你太复杂了。 sort
方法不是异步的,因此您不需要回调或事件。只需将代码放在调用sort
的代码之后:
var sorted_list = non_sorted.sort(function(a,b){
// comparer
});
// The code just continues here after the sort
答案 1 :(得分:0)
排序功能是同步的,因此您可以在通话后立即执行某些操作,但如果您想要其他方式:
Array.prototype.sortCallback = function(compareFunction, resultFunction){
result = this.sort(compareFunction);
resultFunction(result);
}
用法:
non_sorted.sortCallback(function(a, b) {
// Sort stuff here
}, function(sorted) {
// Do something with the sorted array
});
答案 2 :(得分:-1)
这有点脏,但确实有效:
对于排序功能来说足够慢(在合理范围内)并且比肉眼更快。
function sort_with_callback() {
run_sort_function();
setTimeout(function() { run_callback()}, 3);}