@tarroma9

Как сменить scope в callback функции?

Хотел бы структурировать отправку запросов через XMLHttpRequest и создать отдельно методы.
Но не могу разобраться, почему внутри callback- функции request.onreadystatechange, не присваивается значение полученного ответа в переменные, которые объявлены выше. Также попробовал создать свойство в объекте, в которое тоже хотел бы поместить значение, но на момент выполнения if, внутри onreadystatechange, она присваивается и отображается. Но после, будто бы и не было никакой функции. Подскажите пожалуйста, что я упускаю?

This -that тоже пробовал. Непосредственно при обращении к свойству, решил это делать через название объекта, чтобы уж наверняка присвоилось. Но нет.. Хотелось бы, чтобы этот response возвращался (return), при выполнении метода.

let req_obj = {
            th : 2,

            sendRequest () {

                let request = new XMLHttpRequest();

                let url_query = "/test-request" + this.get_query_builder();

                request.open('GET', url_query);


                request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");

                request.send();

                
                let response;

                    request.onreadystatechange = function () {



                        if (request.readyState == 4 && request.status == 200) {
                          response = request.responseText;

                            console.log(response); // Ответ получен и записан, переменная отображается
                             console.log(this); // XMLHttpRequest {readyState: 4, timeout: 0, withCredentials: false, u..........
                           req_obj.th = response; // Пробую записать ее непосредственно в свойство объекта
                                console.log(req_obj.th); // Ответ получен и записан, переменная отображается
                        }


                    };  

                          console.log(response); // undefined 

                          console.log(req_obj.th); // Будто ничего и не было присвоено, также как и сверху 
                          // было указано, что там значение 2

                           console.log(this); // Отображает объект req_obj  

            },
  • Вопрос задан
  • 110 просмотров
Пригласить эксперта
Ответы на вопрос 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
КРАФТТЕК Санкт-Петербург
от 60 000 до 80 000 ₽
Brightdata Тель-Авив
от 5 500 до 6 500 $
Rocket Брянск
от 60 000 до 100 000 ₽
28 мая 2024, в 08:33
500000 руб./за проект
28 мая 2024, в 07:56
1500 руб./в час
28 мая 2024, в 06:55
400 руб./в час