Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

155
Visualizações
Eliminación asincrónica de carpetas profundas recursivamente

Estoy trabajando en una extensión de Chrome que permite a los usuarios crear anotaciones de video. Renderizo un iframe con un sistema de archivos para ayudar al usuario a ordenar sus archivos. La representación del sistema de archivos en chrome.storage es la siguiente:

 const storage = { "ROOT": { files: [], folders: [{id: "folder_id", name: "Folder 1"}] }, "folder_id": { files: [{id: "file_id", name: "File 1"}], folders: [] }, "file_id": { "bookmarks": {} }, }

Tenga en cuenta que cada clave en el almacenamiento es la identificación de una carpeta, un archivo o la raíz. Cada objeto de carpeta contiene dos matrices de objetos que representan información que se mostrará sobre sus archivos y carpetas anidados. Pero cada objeto dentro de esas matrices no contiene información más anidada. Con esta estructura, estoy tratando de descubrir cómo habilitar la eliminación de carpetas de forma asíncrona, tal vez usando recursividad. Esto es lo que tengo:

 const deapRemoveFolder = async (uuid) => { const promiseList = []; const removeFolder = async (uuid) => { const storage = await chrome.storage.sync.get(uuid); if (storage[uuid]) { const { files, folders } = storage[uuid]; // remove all directly nested files from storage files.forEach((file) => promiseList.push(chrome.storage.sync.remove(file.uuid)) ); // remove the key for the folder itself promiseList.push(chrome.storage.sync.remove(uuid)); // if no more folders are nested, then exist the function if (folders.length === 0) return; folders.forEach((folder) => removeFolder(folder.uuid)); } }; await removeFolder(uuid); await Promise.all(promiseList); };

No estoy seguro de si esto es correcto, y no sé si necesito incluir "esperar" en la última línea de la función "eliminar carpeta". Quiero asegurarme de ejecutar estas promesas en paralelo porque no todas dependen unas de otras. Puedo dar más aclaraciones si es necesario.

about 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

dijiste: "Pero cada objeto dentro de esas matrices no contiene información más anidada".

Entonces no hay carpeta dentro de la carpeta de primer nivel. entendí bien?

Si es así, ¿por qué no leer todo el almacenamiento con chrome.storage.sync.get, eliminar la subestructura que desee (es decir, eliminar storage.folder_id o eliminar storage.file_id ") y finalmente guardar el objeto recortado con chrome.storage.sync. establecer ?

Tenga en cuenta que los elementos dentro de chrome.storage se almacenan como un par clave + valor, y no es posible eliminar un subárbol directamente con el método de eliminación.

EDITAR

Puede que haya entendido mal una cosa.

Si llama a await chrome.storage.sync.get (null) , obtiene solo un elemento llamado "almacenamiento" o obtiene un elemento raíz con varias carpetas y elementos de archivos.

Si la respuesta correcta es uno, entonces mi respuesta anterior sigue siendo válida (debe cortar/recortar el objeto y luego guardarlo al final del trabajo en Chrome.storage).

Si la respuesta correcta es dos, entonces la cosa es más simple porque puede eliminar directamente cualquier elemento usando el método de eliminación y la identificación del objeto sin molestar la recursividad y otras cosas.

about 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda