【问题标题】:OS.File.DirectoryIterator timeout in Firefox AddonFirefox 插件中的 OS.File.DirectoryIterator 超时
【发布时间】:2016-10-03 20:19:25
【问题描述】:

我有一种情况,我在 Firefox 中迭代一个文件目录,如下所示:

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
});

似乎这个迭代器承诺有时会超时,并且永远不会在迭代器行之后到达 //Do stuff。 如果我对少量文件执行此操作,它似乎工作正常 - 但如果我的迭代器似乎花费的时间超过一分钟(或一些未知的幻数),则承诺永远不会返回。 Firefox 是否正在做一些事情来关闭我的 OS.File 迭代器?

我在此处阅读了错误报告:https://bugzilla.mozilla.org/show_bug.cgi?id=1279389

有一个 osfile.reset_worker_delay 首选项,但我似乎无法在 Firefox 47 或我下载的任何开发人员版本中找到它。

这是导致我的问题的原因吗 - 迭代器花费的时间太长,因此 firefox 不会跳到下一部分?

【问题讨论】:

    标签: javascript firefox firefox-addon mozilla


    【解决方案1】:

    我是DirectoryIterator的作者。

    1. 通常,只有在关闭期间执行代码时才会发生类似超时的情况。是这样吗?

    2. Preference osfile.reset_worker_delay 仅适用于 Nightly 或 Developer Edition。是的,这个首选项很可能存在错误。如果您可以提供我们可以复制的最小样本,那将非常有帮助。为了在您这边进行测试,您可以看到如果将值设置为一个非常高的数字(比如1000000)会发生什么。

    【讨论】:

    • 我不得不创建一个变通方法并重组我的代码。如果我有机会,我可以看看我是否可以做一个最小的测试用例,但可能不会。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-26
    • 2017-01-31
    相关资源
    最近更新 更多