У меня есть функция, которая выполняет довольно обширные манипуляции с DOM, и я хочу показать спиннер «Загрузка ...» во время выполнения функции:
function showFoos() {
$('#spinner').show();
bigHairyDOMManipulation();
$('#spinner').hide();
}
function bigHairyDOMManipulation() {
for (var i=0; i < arrayOfFoos.length; i++){
buildFooBox(arrayOfFoos[i], i);
}
}
function buildFooBox(foo, index) {
$('#foos').append(
$('<li />').append(...)
.append(...)
...
);
}
К сожалению, все вызовы append()
возвращаются быстро, поэтому, даже если представление не готово, функция выполнена, и счетчик скрывается.
Я не могу придумать хороший способ объединения всех этих добавок в одну цепочку, поэтому я не могу просто прикрепить show()
спереди и hide()
в конце.
Есть ли другой способ заставить hide()
вызвать ожидание всех других манипуляций?