0
fileReaderを使用してserviceWorker内の大きなファイルを読み取ろうとしています。私はちょうど簡単な例を最初にセットアップしたいのですが、私は無限ループに詰め込まれており、なぜそれが理解できません。ここに私のコードは次のとおりです。私のfileReaderがPromiseでラップされて無限にループしているのはなぜですか?
.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バイトの後にループを停止しようと、それは正確に2回目の繰り返しの後にトリガし、約束を解決します。しかし、ループは忘却に繋がります。
質問:私は今、私が間違ってやっているかと思っしばらくの間、この上に座ってる
。たぶん誰か他の人がアイデアを持っています。ありがとう!
解決/拒否の後に復帰が必要 – rickythefox
'resolve'が再帰を停止しない –
ok。リターンが役立つかどうかを見てみましょう。ハ、そうです。それは知らなかった。ありがとう。それを答えさせて、私は確認することができますか? – frequent