FileReader error: The object is already busy reading Blobs

在使用多个FileReader对象时候会遇到。

FileReader错误:对象已经忙于读取Blob。 

    var blob = this.file.slice(this.readed, this.readed + this.step);
            this.reader.readAsArrayBuffer(blob);

 

解决方案:

reader读取时候,先判断一下readyState值,如果不是loading的话再执行读取。

    if (this.reader.readyState == 1)
                return;
            var blob = this.file.slice(this.readed, this.readed + this.step);
            this.reader.readAsArrayBuffer(blob);

 

 

 

readyState FileReader

价值状态描述
0 EMPTY 阅读器已创建。尚未调用任何读取方法。
1 LOADING 已调用读取方法。
2 DONE 操作完成。
EMPTY

FileReader创建,但尚未调用 readAs 方法。

LOADING

调用了 readAs 方法。正在读取一个FileBlob,但尚未发生错误。

DONE

读取操作完成。这可能意味着:整个FileBlob已读入内存,发生文件读取错误,或被abort()调用而读取被取消。

复制代码
var reader = new FileReader();
console.log('EMPTY', reader.readyState); // readyState will be 0

reader.readAsText(blob);
console.log('LOADING', reader.readyState); // readyState will be 1

reader.onloadend = function () {
  console.log('DONE', reader.readyState); // readyState will be 2
};
复制代码

 

 

更多:

判断浏览器是否支持FileReader

HTML5 文件域+FileReader 分段读取文件并上传(八)-WebSocket

HTML5 文件域+FileReader 分段读取文件并上传(七)-WebSocket

 

posted @   天马3798  阅读(968)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2019-03-09 Css3 实现循环留言滚动效果(一)
2015-03-09 TortoiseSVN和VisualSVN-下载地址
点击右上角即可分享
微信分享提示