KiZZek,
Если функция асинхронная то используйте промисы:
var togglePreloader = function () {
alert('Спрятали/показали прелоадер');
}
var longFunction = function () {
togglePreloader();
return new Promise(function (resolve) {
// Тело функции
setTimeout(resolve, 2000); // Вместо таймаута вызывайте resolve в конце рассчетов/запросов и т.д.
});
};
longFunction().then(function () {
alert('Расчет закончен');
togglePreloader();
});