Como retornar uma matriz da função de sucesso do jQuery ajax corretamente? [duplicado]

Esta pergunta já tem uma resposta aqui:

Como faço para retornar a resposta de uma chamada assíncrona? 33 respostas

TheObject = {

    getArray: function(){
        var groups = new Array;
        $.ajax({
              type: "POST",
              url: "link.php",
              success: function (data){
                  var counter = 0;
                  $('g',data).each(function(){    
                      var group_name = $(this).find("name").text();
                      var group_id = $(this).find("id").text();
                      var group = {
                         id: group_id,
                         name: group_name
                      }
                      groups[counter] = group;
                      counter++;
                  });
                  return groups;
              }
         });
     }

}

E quando tento chamar esse método:

var a = TheObject.getArray();
alert(a);

Retorna 'indefinido'. Não consigo descobrir onde está o problema. A matriz é criada dentro da função de sucesso, mas não consigo devolvê-la corretamente. Obrigado pela ajuda!

questionAnswers(3)

yourAnswerToTheQuestion