Коллбек, переданный в then, вызывается асинхронно -- когда-то потом, в неопределенном будущем, неизвестно когда, но точно тогда, когда getFunction уже закончит свое выполнение.
Напишите в консоли:
function getFunction () {
console.log('sync1');
setTimeout(function () {
console.log('async');
}, 1000);
console.log('sync2');
}
Какое бы число вы не поставили вместо 1000, хоть 0, надпись async появится позже, чем sync2. А если поставить брейкпойнт, то хорошо видно, что на момент выполнения console.log('async'); функции getFunction даже нет в стеке вызовов.
Попытаться вернуть результат из асинхронно вызванной функции -- все равно, что вставлять выпавшие волосы. Причем выпавшие у родителя -- его ребенку.
Возвращайте promise:
function getFunction() {
return $.when(
$.ajax('адрес'),
$.ajax('адрес')
)
}
и работайте с ним (с помощью .then и т.д.)