javascript - 如何迭代 FileSystemDirectoryHandle 的内容?

标签 javascript google-chrome-extension chromium file-system-access-api

我正在开发一个 chrome 扩展来简化我的一些工作。此扩展需要访问我的计算机上的文件才能上传它们并使用它们。我正在尝试使用 File System Access API 迭代目录的内容。根据 FileSystemDirectoryHandle 上的文档,我应该能够使用目录句柄的 values() 方法来迭代目录的内容。但是,当我在测试代码中执行此操作时,出现错误:directoryHandle.values 不是函数或其返回值不可迭代

这是我目前正在测试的代码(单击按钮时调用 updateDirectory):

async function updateDirectory(){
  const directoryHandle = await getDirectory();
  console.log('directoryHandle',directoryHandle);
  for(let handle of directoryHandle.values()){
    console.log('handle',handle);
  }
}

const getDirectory = ()=>{
  if(!window.showDirectoryPicker){
    alert('Unsupported Browser Notice');
    return;
  }
  const verify = confirm('Ask user to confirm');
  if(!verify) return 'File picker canceled.';
  return window.showDirectoryPicker();
};

第一个日志语句的输出是:

directoryHandle
FileSystemDirectoryHandle{
  kind:"directory"
  name:"correct name of directory"
  [[Prototype]]:FileSystemDirectoryHandle
}

所以,我知道目录句柄已正确返回。当然,第二条日志语句不会显示,因为 for 循环出错并出现上述错误。

那么,我在这里误解了文件系统访问 API 的哪一部分?

最佳答案

而且,问题是我没有等待 .values() 的返回值。例如

async function updateDirectory(){
  const directoryHandle = await getDirectory();
  console.log('directoryHandle',directoryHandle);
  for await(let handle of directoryHandle.values()){
    console.log('handle',handle);
  }
}

关于javascript - 如何迭代 FileSystemDirectoryHandle 的内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72205424/

相关文章:

javascript - chrome 扩展的内容脚本在 google、youtube 页面中不起作用

v8 - 如何在V8引擎中打印编译后的指令?

docker - 在 DOCKER 容器内使用 headless Chrome 运行基于 selenium 库的测试用例时,Robot Framework 测试用例失败并显示 “Element not found”

javascript - localStorage 和 boolean 值 'string'

javascript - 即使我没有在 peer candidate 中添加 ice candidate,Webrtc Call 也会连接

javascript - 如何使用 JS 为 chrome 扩展程序进行表单验证?

javascript - 阻止下载出现在 Chrome 下载栏上

javascript - 将 JavaScript 注入(inject)网站

javascript - 解决进入路线前不跑

javascript删除动态添加和删除元素