在使用多个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
DONE
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 };
更多: