Показать сообщение отдельно
  #1 (permalink)  
Старый 01.02.2019, 18:04
Интересующийся
Отправить личное сообщение для spin Посмотреть профиль Найти все сообщения от spin
 
Регистрация: 14.10.2014
Сообщений: 11

onreadystatechange ведет себя не так как я ожидал
есть примерно такой код

function upload() {

  var resTxt = _id("uploadResult");
  var form   = _id("uploadForm");          
  var formdata = new FormData(form);
  var xhr      = new XMLHttpRequest();
  xhr.open("POST", "fileservlet");
  
  xhr.onreadystatechange = function() {
    console.log('readyState= ' + this.readyState);
    if (this.readyState == 2) {
      resTxt.innerHTML = "Uploading... ";
    }
    if (this.readyState == 3) {
      if(resTxt.innerHTML.length < 200)
        resTxt.innerHTML = resTxt.innerHTML + ".";
    }
    if (this.readyState == 4) {
      if(this.status != 200) {
        var msg = "ошибка: " + (this.status ? this.statusText : "запрос не удался");
        resTxt.innerHTML += msg;
      }
      else {
        resTxt.innerHTML += "Done";
      }
    }
  }
  
  xhr.send(formdata);
  
}


код работает, за одним исключением
я ожидаю что readyState == 2 будет сразу
потом сколько-то раз (больше одного) выдаст readyState == 3
и только в конце readyState == 4

но нет
все 2, 3, 4 выводит в конце
тестировал на файлах размером 1Гб
браузер FF 57

я чего-то не понимаю ?
Ответить с цитированием