Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在等待文件读取器完成,然后继续_Javascript_Arrays_Asynchronous_Filereader - Fatal编程技术网

Javascript 正在等待文件读取器完成,然后继续

Javascript 正在等待文件读取器完成,然后继续,javascript,arrays,asynchronous,filereader,Javascript,Arrays,Asynchronous,Filereader,我有一段代码,我用它将一个blob分割成片段,它可以按预期的方式工作。但据我所知,fileReader是异步的,我的代码会在整个blob转换为片段并推入fragmentArray之前继续。在代码继续执行之前,是否有任何方法等待碎片数组被碎片完全填充 var file = new Blob([SOME BLOB]); var fragmentArray = []; var chunkSize = 16384; var sliceFile = function

我有一段代码,我用它将一个blob分割成片段,它可以按预期的方式工作。但据我所知,fileReader是异步的,我的代码会在整个blob转换为片段并推入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); 

将应该等待的代码放入
if
语句的
else
分支中。谢谢!这就成功了。