我有这个代码用于将blob拆分成片段,它按预期工作。但据我所知,fileReader是异步的,我的代码会继续,然后整个blob可以转换为片段并推送到fragmentArray中。在代码继续执行之前,有没有办法等待片段完全填充fragmentArray?
var file = new Blob([SOME BLOB]);
var fragmentArray = [];
var chunkSize = 16384;
var sliceFile = function (offset) {
var reader = new window.FileReader();
reader.onload = (function () {
return function (e) {
fragmentArray.push(e.target.result);
if (file.size > offset + e.target.result.byteLength) {
window.setTimeout(sliceFile, 0, offset + chunkSize);
}
};
})(file);
var slice = file.slice(offset, offset + chunkSize);
reader.readAsArrayBuffer(slice);
};
sliceFile(0);