Por que minha matriz está se comportando de maneira diferente fora de uma função AJAX? (preenchendo jsTree) [duplicado]

Esta pergunta já tem uma resposta aqui:

Por que minha variável permanece inalterada depois de modificá-la dentro de uma função? - Referência de código assíncrona respostas

Longa história, estou criando uma matriz semelhante a JSON para jsTree. O que eu não entendo é por que o array é perfeito para minhas necessidades na função de sucesso do AJAX, mas está quebradolado de for dessa função. Confira a captura de tela no meu dump do console, você pode ver as diferenças. Por que é diferente dentro da função e fora da função?

Essencialmente, não posso fazer o que preciso, a menos que esteja no formato perfeito: (myAry dentro da função)

O que dá, cara?

var myAry = [];

$.ajax({
type: "GET",
url: "parents.xml",
dataType: "xml",
success: function(xml) {

    $(xml).find('group').each(function() {

      myAry.push({
        "id": $(this).find('GroupID').text(),
        "parent": "#",
        "text": $(this).find('GroupName').text(),
      });


    }); //end each loop

      //this array is PERFECT
      console.log(myAry);

      } //end success function
  }); //end ajax GET

  //THIS ARRAY IS BORKED
  console.log(myAry);

xml:

 <groups>
    <group>
        <GroupID>1</GroupID>
        <GroupName>Instructional Assistant</GroupName>
    </group>
    <group>
        <GroupID>2</GroupID>
        <GroupName>Technician</GroupName>
    </group>
    <group>
        <GroupID>3</GroupID>
        <GroupName>HR Specialist</GroupName>
    </group>
</groups>

questionAnswers(1)

yourAnswerToTheQuestion