Самый главный совет — оптимизировать работу функции. Что за вычисления производятся над объектами? Может, стоит использовать нативную функцию map для произведения этих вычислений над всеми объектами массива? Может, есть какое-то тяжёлое место в ваших вычислениях, которое в цикле даёт огромный прирост к нагрузке?
А setTimeout посоветовали затем, чтобы функция работала асинхронно и не блокировала весь последующий код. Но если функция сама по себе излишне тяжёлая, это не является решением проблемы.