Использовать таймауты.
Поместив содержимое вашего цикла (ов) в отдельные функции и вызывая их из setTimeout () с тайм-аутом 50 или около того, javascript даст управление потоком и вернемся через некоторое время, позволяя пользовательскому интерфейсу получить внешний вид.
Здесь есть хорошая работа .