Прежде чем я задам этот вопрос, я никоим образом не являюсь свободным разработчиком javascript. Я исхожу из фона ООП, так что все асинхронные вызовы/методы передачи странны.Получение значения обратно из метода dropbox.js findByName()?
В любом случае, я использую dropbox.js SDK и, в частности, следующий способ (как указано в документации):
(XMLHttpRequest) findByName(path, namePattern, options, callback)
У меня есть список расширений файлов я зацикливание чтобы найти, вызвав findByName
для каждого.
var file_extensions = [".py", ".cpp", ".erl"];
function look_for_files(directory_path, file_extensions){
// To hold counts for each file extension
var count_dict = [];
for (var i = 0; i < file_extensions.length; i++){
var current_file = file_extensions[i];
client.findByName(PATH, current_file, function(error, count){
if(error){
return showError(error);
}
else {
count_dict.push(count.length);
}
});
}
console.log(count_dict);
};
Как вы можете видеть, я просто пытаюсь вызвать метод каждый раз, и возвратить ее в список под названием count_dict
. Однако я не могу показать это значение в списке в findByName method.
. Я уверен, что это связано с тем, что я неправильно понимаю обратные вызовы и как все это работает, но может ли кто-то, возможно, помочь?
Спасибо
Вы проверяете, что count_dict по-прежнему пуст каким-либо другим способом, чем инструкция console.log в конце? Потому что, если нет, это может быть проблемой, вызванной асинхронным характером запроса, то есть код может попасть в оператор console.log до того, как произошел какой-либо из обратных вызовов. –