【发布时间】:2017-01-31 22:00:37
【问题描述】:
我正在尝试使用 fileReader 读取 serviceWorker 中的一个大文件。我只想先设置一个简单的示例,但我陷入了无限循环,我不明白为什么。这是我的代码:
.then(function(blob) {
console.log("Let's loop out of control");
function compressAndIndexFile(my_blob) {
var file_reader = new FileReader(),
chunk_size = 1024,
offset = 0;
return new Promise(function (resolve, reject) {
file_reader.onload = function (my_event) {
// process
offset += chunk_size
if (offset > 2048) {
resolve("We're done");
}
return loopOverBlob(offset);
};
file_reader.onerror = function (my_event) {
reject(my_event);
};
function loopOverBlob(my_offset) {
var slice;
console.log("LOOPIng")
console.log(my_offset)
slice = blob.slice(my_offset, my_offset += chunk_size);
return file_reader.readAsText(slice);
}
return loopOverBlob(offset);
});
}
return compressAndIndexFile(blob);
})
我尝试在 2048 字节后停止循环,它在第二次迭代后正确触发并解决了承诺。然而,循环只是继续被遗忘。
问题:
我在这上面坐了一会儿,现在想知道我做错了什么。也许其他人有一个想法。谢谢!
【问题讨论】:
-
解决/拒绝后需要退货
-
resolve不会停止你的递归 -
好的。让我看看退货是否有帮助。哈,确实如此。我不知道。谢谢。让它成为答案,以便我检查?
标签: javascript loops promise filereader