异步列出目录内容

时间:2018-02-02 09:38:08

标签: javascript google-chrome-extension

我从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)如何处理文件夹的删除?

1 个答案:

答案 0 :(得分:1)

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