• Почему массив глобальной переменной стал пустым вне функции?

    @AEVZP
    Но в чем сложность использовать промисы вместо XMLHttpRequest?
    Сама суть асинхронных запросов -- это как раз не блокировать основной поток. Сейчас, если Вы отключили async, то дальше ничего не выполнится пока не будет получен ответ от сервера. А если ответ будет 10 секунд? Минута? (утрирую, конечно).

    Вам это нужно переписать хотя бы с использованием fetch. Уверяю Вас, оставляя код так, вы сами стреляете себе в ногу.