Tengo un objeto json que describe el árbol de archivos en un servidor externo, cuando intento iterar a través de los valores del objeto para poder representar el árbol como HTML, todo el navegador falla y se vuelve a cargar inmediatamente al comienzo del bucle. Aquí está mi código:
HGEClient.send("queryfiletree").then(fileTree => { let renderFolder = function(parentFolder, folder) { this.createCatelogFolder(parentFolder, folder); for(child of Object.values(folder.children)) if(child.type == "folder") renderFolder(folder, child); else this.createCatelogFile(folder, child); } for(location of Object.values(fileTree)) // Crashes here if(location.type == "folder") renderFolder(null, location); else this.createCatelogFile(null, location); }); El objeto en sí no está mal formado y puedo iterarlo en el servidor antes de enviarlo al cliente. He verificado a través del depurador usando puntos de interrupción que el bloqueo es exactamente cuando se asigna un valor a la location la primera vez desde Object.values(fileTree)
location también es un objeto de alcance global en el lado del cliente, por lo tanto, para la iteración, la location necesita su propio alcance, preferiblemente al ser un tipo de variable let , de lo contrario, el script se rompe/bloquea.
const fileTree = [{ type: "folder", id: "foo", }, { type: "folder", id: "bar", }, { type: "file", id: "baz", }]; // `location` needs to be a variable type, preferably `let` // ---v for (let location of Object.values(fileTree)) { if (location.type === "folder") { console.log({ location }); } } .as-console-wrapper { min-height: 100%!important; top: 0; }