Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

154
Vistas
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 Respuestas
Responde la pregunta

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 Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda