Blob的arrayBuffer方法

2019年12月16日Web前端

在控制台中使用Blob实例时,偶然发现有个arrayBuffer的方法,联想到以前利用FileReader将blob转arrayBuffer的方式,来看看这个方法到底是做啥的。

Blob.arrayBuffer()

立刻查看MDN文档Blob.arrayBuffer(),arrayBuffer方法会返回一个promise,并将blob解析为arrayBuffer传入回调参数之中。

blob.arrayBuffer().then(buffer => /* process the ArrayBuffer */);

不过,该方法的兼容性还是有待提高,

Blob.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);
        })
    }
}

这下就可以啦。