Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

149
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!