JSFiddle - React, Tailwind, and code Playground

JavaScript

async function UploadFiles(e){
    console.log("start");
    console.log(e.originalEvent.dataTransfer.items.length);
  var items = e.originalEvent.dataTransfer.items;
  
  for (var i=0; i<items.length; i++) { //по всей видимости, этот for срабатывает только один раз, но почему?
    // webkitGetAsEntry is where the magic happens
    var item = items[i].webkitGetAsEntry();
    if (item) {
      await traverseFileTree(item);//Вот этот метод выполняется в любом случае 1 раз 
    }
  }
    console.log("Успешно!");
}
 
 
async function traverseFileTree(item, path) {
 path = path || "";
  if (item.isFile) {
    // Get file
    console.log("File:", path + item.name);
  } else if (item.isDirectory) {
    // Get folder contents
    var dirReader = item.createReader();
    var allentries = [];
    var entries = await getEntriesFromReader(dirReader);
    while(entries.length > 0){
        allentries.push(entries);
        entries = await getEntriesFromReader(dirReader);
    }
    var entr = [];
     for (var i=0; i<allentries.length; i++) {
        for (var j=0; j<allentries[i].length; j++) {
            entr.push(allentries[i][j]);
        }
      }
      
      for (var i=0; i<entr.length; i++) {
        await traverseFileTree(entr[i], path + item.name + "/");
      }  
  }
}
async function getEntriesFromReader(reader) {
return  new Promise((resolve)=>reader.readEntries(resolve))
}