【问题标题】:List directory contents asynchronously异步列出目录内容
【发布时间】:2018-02-02 09:38:08
【问题描述】:

我遇到了来自Mozilla的以下代码示例:

function readDirectory(directory) {
  let dirReader = directory.createReader();
  let entries = [];

  let getEntries = function() {
    dirReader.readEntries(function(results) {
      if (results.length) {
        entries = entries.concat(toArray(results));
        getEntries();
      }
    }, function(error) {
      /* handle error -- error is a FileError object */
    });
  };

  getEntries();
  return entries;
} 

这段代码应该如何工作?传递给readEntries 的回调函数是异步调用的,所以readDirectory 函数在回调执行并填充条目之前不是已经返回了吗?

编辑:

我在 Chrome 中对其进行了测试,确实它是异步的,并且该函数在没有填写条目的情况下返回。 我想要实现的是在用户将文件夹拖放到网站时读取文件夹内容。我正在听“drop”事件,但是在我用上面的代码列出目录内容之前,“drop”回调就返回了,并且 dataTransfer 对象被破坏了。

网站(如 OneDrive)如何处理文件夹的删除?

【问题讨论】:

  • 好像 getEntries 不是异步的。

标签: javascript google-chrome-extension


【解决方案1】:

是的,如果 readEntries 是异步的,readDirectory 也必须是异步的。我搜索了 Mozilla,它还没有记录,async/sync 属性。

【讨论】:

    猜你喜欢
    • 2019-01-11
    • 2011-06-10
    • 2021-06-07
    • 2013-08-04
    • 2013-12-07
    • 2019-02-27
    • 2019-09-05
    • 1970-01-01
    • 2021-01-12
    相关资源
    最近更新 更多