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 @ 2022-03-09 17:41  天马3798  阅读(711)  评论(0编辑  收藏  举报