Проблемы ниже У меня есть arr_x array.And я называю функцию «call_when_drop», как показано нижеAsynchronous JavaScript не синхронен оно не ждать процессы массива комплектных на событии перетаскивания
<body ondrop="call_when_drop(event,this);" ></body>
Затем начинает создавать элементы массива .Если я скрою длину массива журнала, я вижу только 1, но когда я консолью журнал через несколько секунд, я вижу все количество элементов массива. Но интересно то, что когда я массив console.log, я сам могу видеть все элементы
ниже функции относятся к здесь Does HTML5 allow drag-drop upload of folders or a folder tree?
var arr_x=[];
function traverseFileTree(item, path,connection_time) {
if(arr_x.length>25){
return arr_x;
}
arr_x[arr_x.length]=arr_x.length;
path = path || "";
if (item.isFile) {
} else if (item.isDirectory) {
var dirReader = item.createReader();
//console.log(dirReader);
dirReader.readEntries(function(entries) {
var dir=[];
for (var i=0; i<entries.length; i++) {
traverseFileTree(entries[i], path + item.name + "/",connection_time);
}
});
}
return arr_x;
}
Эта функция вызывается, когда падение пользовательской папки в браузере
function call_when_drop(e,element){
var items = e.dataTransfer.items;
for (var i = 0, item; item = items[i]; ++i) {
if (item.kind == 'file') {
var a = traverseFileTree(item.webkitGetAsEntry(),"");
console.log(arr_x);
console.log('with_setTimeout');
console.log(arr_x.length);
console.log('---------------------------------------');
setTimeout(function(){
console.log('with_setTimeout');
console.log(arr_x.length);
},300);
}
}
}
Примечание: Я заметил, что если я изменю traverseFileTree
функции, как показано ниже это работает, но мне нужно, прежде чем рабочая версия функция в
function traverseFileTree(item, path,connection_time) {
if(arr_x.length>25){
return arr_x;
}
arr_x[arr_x.length]=arr_x.length;
traverseFileTree();
return arr_x;
}
Исследование обратных вызовов. Чтение из потоков не блокирует IO. Его в основном делают все это одновременно, и вы не ожидаете, что они закончат – magreenberg
@magreenberg, пожалуйста, просмотрите мой обновленный вопрос и как я могу это исправить? – user7352487
'javascript имеет ошибку, которая не ждет' - ваша фактическая проблема заключается в том, что 'асинхронный javascript не является синхронным' –