我有一个从XmlHttpRequest读取数据的脚本,偶尔会调用它已读取的数据的指定回调。这样做是为了让用户无需下载整个文件即可开始查看。
因此,在发送请求后,我为readystatechange事件添加了处理程序,简化后,如下所示:
request.onreadystatechange = function () {
if (request.readyState !== 3 && request.readyState !== 4 || request.status !== 200) {
return;
}
var responseText = request.responseText;
if (responseText.length === 0) {
return;
}
if (stream.offset + responseText.length > stream.processed) {
var chunk = responseText.substring(stream.processed - stream.offset);
stream.processed += chunk.length;
stream.callback(chunk);
}
};
它在Chrome 36和Firefox 31中运行良好,但在IE 11中,页面会冻结一分钟。
所以我运行了探查器,这里的第一行是
所以我的问题是:为什么需要这么多时间来访问responseText以及我该怎么办呢?