Blob的arrayBuffer方法
在控制台中使用Blob实例时,偶然发现有个arrayBuffer的方法,联想到以前利用FileReader将blob转arrayBuffer的方式,来看看这个方法到底是做啥的。
Blob.arrayBuffer()
立刻查看MDN文档Blob.arrayBuffer(),arrayBuffer方法会返回一个promise,并将blob解析为arrayBuffer传入回调参数之中。
blob.arrayBuffer().then(buffer => /* process the ArrayBuffer */);
不过,该方法的兼容性还是有待提高,
兼容
结合 readAsArrayBuffer
方法,我们来做下兼容:
function toArrayBuffer(blob) {
if (blob.arrayBuffer) {
return blob.arrayBuffer();
} else {
return new Promise((resolve) => {
let reader = new FileReader();
reader.onload = function (e) {
let data = e.target.result;
resolve(data);
}
reader.readAsArrayBuffer(blob);
})
}
}
这下就可以啦。