Расширение FileReader.OnLoad в блоке кода - PullRequest
0 голосов
/ 19 апреля 2020

Я написал 2 куска тестовых кодов. Они оба вызвали сообщение «ОК». Означает ли это, что свойство OnLoad (ссылка на обработчик событий после завершения чтения данных) переходит в начало кода и вызывается независимо от его местоположения?

1-й кусок

        var selectedFile = event.target.files[0];           
        var reader = new FileReader();
        reader.onload = function() {alert('ok');};
        reader.readAsDataURL(selectedFile);

2-й шт

        var selectedFile = event.target.files[0];
        var reader = new FileReader();
        reader.readAsDataURL(selectedFile);
        reader.onload = function() {alert('ok');};

1 Ответ

0 голосов
/ 19 апреля 2020

Я не уверен, что вы подразумеваете под "эскалацией" (возможно, вы имеете в виду hoisted ?), Но что вы делаете, когда устанавливаете функцию в свойство onload, добавляете слушатель асинхронного события к этому. Поэтому он будет называться не , где находится в синтаксисе вашей программы (независимо от того, поднят он или нет), а , когда событие отправляется браузером. Невозможно точно знать, когда это произойдет раньше, но это произойдет в какой-то момент после того, как ваш синхронный код JavaScript будет завершен, и управление основным потоком будет возвращено браузеру.

...