Улучшаем шаблон

Этот шаблон можно немного видоизменить, чтобы он обрабатывался не по завершению процесса, а в ходе его исполнения. Это нам очень поможет при использовании индикатора состояния:

function doSomething (progressFn [, дополнительные аргументы]) {
        // Выполняем инициализацию
        (function () {
        // Делаем вычисления...
               if (условие для продолжения) {
               // Уведомляем приложение о текущем прогрессе
                       progressFn(значение, всего);
               // Обрабатываем следующий кусок
                       setTimeout(arguments.callee, 0);
               }
        })();
}