FileSystemAPI не работает для каталога, содержащего большое количество файлов?

Я использую приведенный ниже код, который использует FileSystemAPI с веб-работником.

      const worker = new Worker( "worker.js" );
btn.onclick = async (evt) => {
  const dirHandle = await showDirectoryPicker();
  worker.postMessage( dirHandle );
};
worker.onmessage = (evt) => {
  console.log( evt.data );
  document.querySelector("pre").textContent = JSON.stringify( evt.data, (key, value) => {
    if( value instanceof Blob ) {
      return { name: value.name, size: value.size, type: value.type };
    }
    return value;
  }, 4 );
}

worker.js

      onmessage = async (evt) => {
  const out = {};
  const dirHandle = evt.data;  
  await handleDirectoryEntry( dirHandle, out );
  postMessage( out );
};
async function handleDirectoryEntry( dirHandle, out ) {
  for await (const entry of dirHandle.values()) {
    if (entry.kind === "file"){
      const file = await entry.getFile();
      out[ file.name ] = file;
    }
    if (entry.kind === "directory") {
      const newHandle = await dirHandle.getDirectoryHandle( entry.name, { create: false } );
      const newOut = out[ entry.name ] = {};
      await handleDirectoryEntry( newHandle, newOut );
    }
  }
}

https://glitch.com/edit/#!/navigate-sub-directory-from-a-worker?path=worker.js%3A5%3A21

Выше работает с небольшим набором данных, но с каталогом с более чем 1000+ файлами он не работает.

Любая помощь или вклад приветствуются. Спасибо!

1 ответ

Ваш код правильный, и я только что успешно просмотрел более 1 КБ файлов на моем компьютере (MacBook Pro 2020). Если вы снова с этой проблемой, отправьте файл столкнетесьnew.crbug.com (при использовании этой ссылки информация об ошибке будет предварительно заполнена всей информацией, которая понадобится команде разработчиков). Не стесняйтесь размещать здесь идентификатор ошибки, и я буду рад провести сортировку.

Другие вопросы по тегам