小编典典

XmlHttpRequest的进行时间间隔

ajax

我正在使用XmlHttpRequests将图像上传到服务器,并且想向用户显示这些上传的进度。

不幸的是,对我的onprogress-event处理程序的调用之间的间隔太大。对于500k图像,通常仅一次或两次调用onprogress。

这是我的代码:

/* This function is not called often enough */
function progress(e){
    console.log('Uploading: ' + Math.round((e.loaded / e.total) * 100) + ' %');
}

var xhr = new XMLHttpRequest();
xhr.upload.addEventListener('progress', progress, false);
xhr.send(data);

可以更改此行为,还是在浏览器实现中将其硬编码?


阅读 523

收藏
2020-07-26

共1个答案

小编典典

W3在其XMLHttpRequest Level
2
文档中提出了以下准则。显然,跨浏览器的一致性级别会有所不同。

上载:

当请求实体主体正在上载并且上载完成标志为false时,将任务排队以在XMLHttpRequestUpload对象上大约
每50毫秒或发送的每个字节中 触发一个名为progress的进度事件 ,以最不频繁的时间为准 。-W3
XMLHttpRequest级别2(以粗体显示)

资料下载:

当据说要进行进度通知时,在下载正在进行的同时,将任务排队,以大约 每50毫秒或每接收到一个字节 触发一个名为progress的进度事件
,以最不频繁的时间为准 。-W3 XMLHttpRequest级别2(以粗体显示)

我不知道可以自定义此功能的API。

2020-07-26