如何获取 Fetch API 的进度?

How to get progress from Fetch API?

我正在使用 $.ajax,我可以做到:

var xhr = new window.XMLHttpRequest();
//Upload progress
xhr.upload.addEventListener("progress", function(evt){
  if (evt.lengthComputable) {
    var percentComplete = evt.loaded / evt.total;
    //Do something with upload progress
    console.log(percentComplete);
  }
}, false);

但是,当我使用 fetch api 时,我该怎么办?

var fData = new FormData();
fData.append("userfile",document.getElementById("file").files[0]);
fetch("/", {method:"POST",body:fData}).then(function(res){});

截至目前,您还不能。它还不是规范的一部分。关于它有一个 issue for it on the spec's repo but it's closed. There's also some discussion on this issue

长话短说,您最好暂时坚持使用 xhr,除非您想在第二期链接中尝试一些 polyfills/workarounds。

它只是不受支持,这也是 fetch 请求在完成之前不会显示在开发工具的网络选项卡中的原因。