Рассмотрим случай синхронизации с помощью $.Deferred, когда, возможно, запрашивать по сети ничего и не требуется, подобную ситуацию можно реализовать таким образом:
var getFilter = $.Deferred(); // будем ждать "резрешения" этой переменной
if (document.location.hash.length !== 0 ) { // если загрузка по сети не требуется
oldParam = document.location.hash;
getFilter.resolve(); // "разрешаем" вручную
} else { // если всё же требуется делать запрос
getFilter = $.get(filterLoadUrl, function(data) { // Запросим данные (асинхронно отн. привязки событий)
oldParams = JSON.parse(data); // код обработчика завершения запроса
});
}
// когда $.get() выполнится, getFilter будет переведена интерпретатором в
// состояние .resolve() автоматически
$.when(getFilter).done(function() { // ждём разрешения (может - ответа по сети)
// синхронизированный код
}