0
当发送带有async = false的XMLHttpRequest时,xhr.upload.onprogress事件永远不会被执行文件上传。XMLHttpRequest onprogress不会触发async = false
来源:
var form = new FormData();
form.append("name", files[i].name);
form.append("size", files[i].size);
form.append("type", files[i].type);
form.append("image", files[i]);
var xhr = new XMLHttpRequest();
xhr.upload.onprogress = function(evt){
alert("Progress event fired!");
if (evt.lengthComputable)
{
var percentComplete = (evt.loaded/evt.total)*100;
console.log(percentComplete);
}
};
xhr.onload = function() {
console.log(files[i].name + " uploaded!");
};
xhr.open("post", "/images/upload", false);
xhr.send(form);
我已经在Firefox和Chrome浏览器测试这一点。
我不知道如果我错过了一些文档,但找不到任何指示xhr.upload.onprogress事件在async = false时未被触发的情况。
如果我更改请求以async = true运行,它会被解雇。
在[规范第4.5.6节](https://xhr.spec.whatwg.org/)中,您可以阅读规范中关于进度事件的内容。 – jfriend00 2014-10-19 10:14:55
有关同步HTTP请求的第一条规则:您不使用它们。永远。 *自从*。 – Tomalak 2014-10-19 11:26:28