Estoy trabajando en una extensión de Chrome para optimizar parte de mi trabajo. Esta extensión necesita acceso a archivos en mi computadora para cargarlos y trabajar con ellos. Estoy tratando de iterar sobre el contenido de un directorio usando la API de acceso al sistema de archivos . De acuerdo con la documentación en FileSystemDirectoryHandle , debería poder usar el método de values() del identificador del directorio para iterar sobre el contenido del directorio. Sin embargo, cuando hago esto en mi código de prueba, aparece un error que indica que directoryHandle.values is not a function or its return value is not iterable .
Aquí está el código que estoy probando en este momento (se llama a updateDirectory cuando se hace clic en un botón):
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(); };El resultado de las primeras sentencias de registro es:
directoryHandle FileSystemDirectoryHandle{ kind:"directory" name:"correct name of directory" [[Prototype]]:FileSystemDirectoryHandle }Entonces, sé que el identificador del directorio se devuelve correctamente. La segunda declaración de registro no se muestra, por supuesto, porque el bucle for falla con el error descrito anteriormente.
Entonces, ¿qué parte de la API de acceso al sistema de archivos estoy malinterpretando aquí?
Y el problema era que no estaba esperando el valor de retorno de .values() . P.ej
async function updateDirectory(){ const directoryHandle = await getDirectory(); console.log('directoryHandle',directoryHandle); for await(let handle of directoryHandle.values()){ console.log('handle',handle); } }