2016-10-03 4 views
0

私は次のようなもので、Firefoxでファイルのディレクトリを反復処理していな状況があります。OS.File.DirectoryIteratorタイムアウト

let iterator = OS.File.DirectoryIterator(dir); 
let itPromise = iterator.forEach(entry){ 
return OS.File.read(entry.path).then(array => { 
return anotherPromise(array).then (
. 
. 
. 
} 
}); 

return itPromise.then(function() { 
//DO stuff after iterator is completely done 
}); 

それは時々タイムアウトするこのイテレータの約束のように思えるし、 // iterator行の後のものを実行しないでください。 少数のファイルでこれをやっているとうまくいくように見えますが、イテレータが1分(何か不明なマジックナンバー)を超えると思われる場合、約束は返ってこない。 firefoxは私のOSをシャットダウンする何かをしていますか?イテレータをファイルしますか?

私はここにバグレポートで読む:そこosfile.reset_worker_delayの好みがあるが、私は、Firefox 47でそれを見つけることができるように見える、または私がダウンロードした開発者向けバージョンのいずれかのないことをhttps://bugzilla.mozilla.org/show_bug.cgi?id=1279389

これは私の問題を引き起こしているのでしょうか?イテレータは時間がかかり、次の部分に飛ばされることはありませんか?

答えて

0

私はDirectoryIteratorの著者です。

  1. 通常、タイムアウトのようなものは、シャットダウン中にコードが実行された場合にのみ発生します。これは本当ですか?

  2. プリファレンスosfile.reset_worker_delayは、NightlyまたはDeveloper Editionでのみ使用できます。はい、この趣旨のバグがある可能性があります。私たちが再現できる最小のサンプルを提供できるなら、それは非常に役に立ちます。あなたの側でテストするには、値を非常に高い数値(たとえば、1000000)に設定するとどうなるかを知ることができます。

+0

Iveは回避策を作成してコードを再構成する必要がありました。私がチャンスを得たら、私は最小限のテストケースを作ることができるかどうかを知ることができますが、それは少し難しいかもしれません。 – Derek

関連する問題