在继续之前等待fileReader完成

时间:2018-06-08 11:44:20

标签: javascript arrays asynchronous filereader

我有这个代码用于将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); 

0 个答案:

没有答案