Как указывает @marc (косвенно), вы должны понимать природу вызова ajax и модель события.
Ajax-вызов выполняется, как только анализируется JS-файл, и результат возвращается асинхронно . Итак, ваша временная шкала кода будет выглядеть как
00 set global = []
01 AJAX call /someurl/ -------------------\
02 check global /* it's empty */ \
03 do something else [process AJAX call on server, send result]
... /
42 AJAX call is completed <----------------/
43 call success ----------------------------------> global.push(result)
44 at this point of time you can access global
Это временная шкала, а не порядок исполнения. Время между вызовом AJAX и ответом может быть произвольным, включая случай тайм-аута или ошибки на стороне сервера
Итак, что вы должны делать?
1) нормальное решение для JS - обратный вызов, функция успеха, которую вы уже имеете, может либо
1.1) установить глобальный и вызвать другую функцию, или
1.2) выполнить нужные действия с данными
2) событие - лучше, если вы предполагаете использовать данные в нескольких частях кода, читайте механизм событий jQuery
3) синхронный вызов, как предлагает @marc - этого следует избегать в 99% случаев. Единственный известный мне случай, когда это может потребоваться, - это когда вам необходимо запросить обязательные данные из стороннего источника, и даже в этом случае вы можете сделать это на сервере (хотя по крайней мере приемлем синхронный AJAX)