Считыватель файлов Javascript + проблема в области видимости переменной - PullRequest
1 голос
/ 03 октября 2019

я хочу прочитать файл в javascript и манипулировать некоторой переменной, поэтому я использую этот код:

var error = false;

var fileReader = new FileReader();
fileReader.onload = function(fileLoadedEvent){
    var textFromFileLoaded = fileLoadedEvent.target.result;
    if(textFromFileLoaded.length >=1000){
        error = true;
    }



    console.log(textFromFileLoaded);
};

fileReader.readAsText(uploadFile, "UTF-8");
if(error == true)
    $('#export').prop('disabled', true);

в последнем коде, когда я пытаюсь проверить, является ли ошибка истинной, я обнаружил ее ложной (это означает, чточто изменение переменной ошибки внутри дозы программы чтения файлов не сохраняется. В чем проблема, пожалуйста, мне нужна ваша помощь.

1 Ответ

0 голосов
/ 03 октября 2019

FileReader.readAsText () является асинхронным, поэтому следующая строка будет выполнена до того, как чтение файла будет готово.

Вы можете установить свойство disabled в обработчике событий.

fileReader.onload = function(fileLoadedEvent){
    var textFromFileLoaded = fileLoadedEvent.target.result;
    if(textFromFileLoaded.length >=1000){
        error = true;
        $('#export').prop('disabled', error);
    }
};

fileReader.readAsText(uploadFile, "UTF-8");
...