перехват XHR-запросов, JavaScript реагирует - PullRequest
0 голосов
/ 17 сентября 2018

Я пытался переопределить методы, чтобы перехватить запросы xhr, но кажется, что все, что я делаю, выводит только 1 для this.readyState. У кого-нибудь есть идеи почему?

    addInterceptorsToXHRRequests() {
    const originalOpen = XMLHttpRequest.prototype.open;
    XMLHttpRequest.prototype.open = function() {
        const originalStateChangeHandler = this.onreadystatechange;
        this.onreadystatechange = function() {
            console.log(' ---> ',this.readyState);
            if (originalStateChangeHandler instanceof Function) {
                originalStateChangeHandler.apply(this, arguments);
                console.log('Ready state: ' + this.readyState);
            }
        };
        return originalOpen.apply(this, arguments);
    };
}

Я вызываю эту функцию из index.js, в конце метода жизненного цикла componentDidMount. (довольно большой проект)

1 Ответ

0 голосов
/ 17 сентября 2018

Это происходит потому, что вы связываете функцию с XMLHttpRequest.prototype.open .

открыто возвращает только состояние 1. Итак, вам нужно прикрепить функцию onreadystatechange к полному xhr.

Пример

// you probably want the original XMLHttpRequest here...
const xhr = new XMLHttpRequest();

xhr.onreadystatechange = function () {
   console.log(xhr.readyState);
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...