Вы запрашиваете синхронные запросы: функция не должна возвращать, пока ее возвращаемое значение не может быть вычислено, даже если это потребует сотен миллисекунд запроса сервера для данных.
Установив третий аргументxhr.open
до true
, вы используете асинхронные запросы - сообщаете браузеру, что вы хотите, чтобы ваша функция возвращалась до получения ответа от сервера .Что в значительной степени означает, что он не может вернуть элементы, так как они еще не были получены.
Конечно, использование синхронных запросов является проблемой пользовательского интерфейса, потому что ваш javascript в основном заблокирован, пока ответ не возвращаетсянесколько сотен миллисекунд спустя (если вам повезет).
Рекомендуется правильно структурировать код JavaScript для учета асинхронной связи и разрешить возврат значений через обратный вызов вместо return
.У вас нет , но в конечном итоге это избавит вас от боли.