Как сделать паузу в js вычислениях, чтобы отрисовать изменения?
Как вариант, всю тяжёлую работу передать в web worker.


показать лоадер
вынуть из localStorage данные, и отправить их в worker
спиннер крутится, воркер в другом треде считает
воркер наконец пришлёт ответ: большой кусок готового HTML
вставить весь полученный HTML разом
скрыть спиннер

JS каждой страницы в браузере однопоточный. Поэтому для того, чтобы на странице что-то происходило, вам необходимо разбить свой код на быстро выполняющиеся фрагменты так, чтобы каждый фрагмент вызывал следующий через setTimeout. Тогда между этими фрагментами браузер сможет обрабатывать события пользовательского интерфейса.