Pozbywanie się synchronicznych komponentów XHR

Uwaga! Specyfikacja XMLHttpRequest2 została niedawno zmieniona, aby uniemożliwić wysyłanie żądań synchronicznych, gdy ustawiono XMLHttpRequest.responseType. Celem tej zmiany jest ograniczenie dalszego wykorzystania synchronicznych xhr, gdy tylko jest to możliwe.

Na przykład ten kod spowoduje teraz wywołanie INVALID_ACCESS_ERR w kompilacjach Chrome i FF w kanale dla programistów:

var xhr = new XMLHttpRequest();
xhr.responseType = 'arraybuffer';
xhr.open('GET', '/', false); // sync request
xhr.send();

Zobacz Błąd WebKit, Błąd Mozilla

Synchroniczne XHR są z wielu powodów szkodliwych, ale w poście na blogu MSDN „Why You Child Use XMLHttpRequest Asynchronously” (Dlaczego warto używać XMLHttpRequest Asynchronously) zawiera świetne objaśnienie tych problemów.

W przypadku witryn jest to zwykle świetna zmiana, ale może zaburzyć działanie niektórych istniejących aplikacji, które działają w sposób synchroniczny. Aby korzystać z żądań asynchronicznych, sprawdź swój kod XHR i zaktualizuj go jak najszybciej.