Я пытаюсь загрузить локальный файл .json в свое веб-приложение. Я уже пришел к тому, что я могу отобразить файл в инструментах разработчика, но не могу сделать его доступным для дальнейшего использования. Я подозреваю, что проблема в том, как я обрабатываю (или не обрабатываю) асинхронное поведение программы чтения файлов.
Все работает в среде Angularjs (1.7), отсюда и синтаксис фрагмента. Предполагается использовать для отображения прочитанных данных на карте открытых слоев.
this.jsonSelected = function(newFile) {
let reader = new FileReader();
let result = 'empty';
reader.readAsText(newFile);
reader.onload = function(e) {
result = e.target.result;
console.log('in onload', result);
this.result = e.target.result;
};
console.log(this.result);
};
this.test = function() {
console.log(this.file);
}
Я ожидаю, что код выйдет из содержимого файла дважды. Однажды на "console.log ('в onload', результат);" и в другой раз на "console.log (this. result);". Первый работает как положено. но почему-то второй не получится. Также порядок в консоли переворачивается, console.log (this. Result) предшествует журналу загрузки, как вы можете видеть на этом снимке экрана консоли .
Я пробовал несколько вариантов, меняя названия, меняя это. и так далее, но безрезультатно. Вот почему я считаю, что я испортил обработку асинхронных данных. Также на скриншоте, а точнее на строках из журналов, указана какая-то проблема синхронизации.