<分区>
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
});
(如果需要,我可以提供 compareRowsBasedOnColumn,但正如其名称所表达的那样。)
使用 Firebug 调试器在 Firefox 中运行,我在控制台中看到 saveAll
的 POST 之前上面的 DEBUG 2
,穿插着DEBUG 1
,我没有有效地利用我的内容。 DEBUG 1
给出了我期望的结果。
顺便说一下,这只有 Javascript Array.sort 函数是异步的才有意义。
如果它确实是异步的,除了编写我自己的类型之外,任何人都可以建议一种重写它的好方法(如果只是为了清楚起见,我真的宁愿坚持使用他们的方法)。