$("a").click(function() {
$('.preloader').fadeIn();
$('.preloader').promise().done(function(){
// теперь картинка полностью появилась
var defer = $.Deferred();
defer.then(function() {
// подсчет закончен, прячем картинку
$('.preloader').fadeOut();
});
setTimeout(function() {
$("#result").append("Выполнилась долгая функция");
defer.resolve();
}, 2000) ;
});
});