Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript数组排序是异步的吗?_Javascript_Jquery_Sorting_Asynchronous - Fatal编程技术网

Javascript数组排序是异步的吗?

Javascript数组排序是异步的吗?,javascript,jquery,sorting,asynchronous,Javascript,Jquery,Sorting,Asynchronous,Javascript Array.sort函数是否异步?我不这么认为,但当我运行以下代码时,它看起来确实是: $('#alphabetical-order').data('sort-column', 'FileAlpha'); $('#first-numeric-order').data('sort-column', 'FileFirstNumeric'); $('#last-numeric-order').data('sort-column', 'FileLastNumeric'); $('#

Javascript Array.sort函数是否异步?我不这么认为,但当我运行以下代码时,它看起来确实是:

$('#alphabetical-order').data('sort-column', 'FileAlpha');
$('#first-numeric-order').data('sort-column', 'FileFirstNumeric');
$('#last-numeric-order').data('sort-column', 'FileLastNumeric');
$('#alphabetical-order, #first-numeric-order, #last-numeric-order').each(function() {
    var $this = $(this);
    $this.data('compare-function', function(row1, row2) {
        console.log('column = ' + $this.data('sort-column')); // >> DEBUG 1
        compareRowsBasedOnColumn(row1, row2, $this.data('sort-column'));
    });
}).click(function() {
    var $this = $(this);
    var $content = $('table.sheetlist-content tr.content');
    $content.sort($this.data('compare-function'));
    console.log('$content.sort complete'); // >> DEBUG 2
    $table_body = $('table.sheetlist-content tbody')
    $table_body.html('');

    for (i=0; i<$content.length; ++i) {
        $table_body.append($content[i]);
    }
    saveAll(); // which POSTs to our server
});
$('#字母顺序')。数据('sort-column','FileAlpha');
$(“#第一个数字顺序”).data('sort-column','FileFirstNumeric');
$('last numeric order')。数据('sort-column','FileLastNumeric');
$(“#字母顺序,#第一个数字顺序,#最后一个数字顺序”)。每个(函数(){
var$this=$(this);
$this.data('compare-function',function(第1行,第2行){
console.log('column='+$this.data('sort-column'));//>>DEBUG 1
compareRowsBasedOnColumn(第1行,第2行,$this.data('sort-column');
});
})。单击(函数(){
var$this=$(this);
var$content=$('table.sheetlist-content tr.content');
$content.sort($this.data('compare-function'));
console.log(“$content.sort complete”);/>调试2
$table_body=$('table.sheetlist-content tbody')
$table_body.html(“”);
for(i=0;iYes.)由JavaScript所基于的ECMAScript规范保证是同步的

此处明确指定了算法:

让obj作为调用ToObject的结果,并将此值作为参数传递

获取此

设len是将Uint32应用于调用参数为“length”的obj的[[Get]]内部方法的结果的结果

获取
.length

如果comparefn不是未定义的,并且不是此数组元素的一致比较函数(请参见下文),则排序行为由实现定义

获取传递的比较函数。如果它未定义,则实现可以执行它想要的任何操作(在实践中,它执行词法排序,但是它必须是同步的,因为我们将很快看到它)

执行对obj的[[Get]]、[[Put]]和[[Delete]]内部方法以及对SortCompare(如下所述)的依赖于实现的调用序列,其中对[[Get]]、[[Put]]或[[Delete]]的每次调用的第一个参数是小于len的非负整数,其中调用SortCompare的参数是以前调用[[Get]]内部方法的结果。对[[Put]]和[[Delete]]内部方法的throw参数的值将为true。如果obj不是稀疏的,则不能调用[[Delete]]

返回obj

因此,它在SortCompare中执行操作,SortCompare只是比较它们(下面几行)


请注意,所使用的排序是由实现定义的(实际上在不同的实现中有所不同),它也不能保证是稳定的。

否。它不是异步的。“我在上面的调试2之前在控制台中看到了我的saveAll中的帖子”我不明白
saveAll()
DEBUG 1
有什么关系。你的意思是什么“我看到了帖子…”Phrogz:正如我所说,这一直是我的理解,但是你能找到任何方法来解释我在Firebug中看到了什么吗?或者它没有写回更改的表顺序这一事实吗?Cookie monster:每一个都写入控制台,并且可以在Firebug的控制台窗格中查看。(帖子显示在控制台中。)…哦,等等,您的
比较函数
没有返回值!如果没有
返回
语句,则无法进行排序。您是想执行
返回比较器WSBasedOnColumn(第1行,第2行,$this.data('sort-column');