2014-06-21 2 views
0

Я сортировки большой массив в JavaScript с помощью метода Array.sort(),Javascript метод сортировки: конец задачи

Призывая сортировки() Я хотел бы, чтобы отобразить загрузчик GIF, для того, чтобы показать, что скрипт запущен.

, то я хотел бы, чтобы скрыть этот загрузчик и бросить функцию: когда задача закончена

Как мы можем знать whent новый массив доступен с помощью метода сортировки()?

// 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; 
    } 

} 
+0

FYI, gif анимация останавливается при выполнении функций JS. – Teemu

+0

Я думаю, что метод sort() синхронен. Просто покажите загрузчик, сортируйте и скройте загрузчик, и он должен работать. О, и Teemu прав, окно просмотра заморожено во время выполнения JS. – blex

+0

Я просто наткнулся на это: [** Как продолжать анимацию GIF при выполнении интенсивных вычислений **] (http://stackoverflow.com/questions/7300632/how-to-keep-animated-gif-running-while- делать-интенсивные-расчеты) – blex

ответ

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(); 
} 
Смежные вопросы