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