Странная задержка в несколько секунд

199
26 апреля 2017, 12:13

Использую <input id="upload"> для загрузки изображения. При нажатии на input открывается стандартное окно браузера выбора файла. При срабатывании выбора файла (onchange) - включаю отображение 2х элементов, в них отображается canvas с загруженной картинкой. Не могу понять почему так долго происходит срабатывание оторажения элементов - 5-7 секунд.

$('#upload').on('change', function () {
    $('#upload-canvas').show();
    $('#upload-btn').show();
    var reader = new FileReader();
    var img = new Image();
    reader.onload = function ( e ) {
        img.onload = function () {
            var canvas = document.createElement( 'canvas' );
            var ctx = canvas.getContext( "2d" );
            var width = img.width;
            var height = img.height;
            var MAX_WIDTH = 1000;
            var MAX_HEIGHT = 1000;
            // Resize maintaining aspect ratio
            if ( width > height ) {
                if ( width > MAX_WIDTH ) {
                    height *= MAX_WIDTH / width;
                    width = MAX_WIDTH;
                }
            } else {
                if ( height > MAX_HEIGHT ) {
                    width *= MAX_HEIGHT / height;
                    height = MAX_HEIGHT;
                }
            }
            canvas.width = width;
            canvas.height = height;
            // Copy the image to the canvas and resize it.
            ctx.drawImage( img, 0, 0, width, height );
            // Toss the new down-scaled image over to Croppie
            $uploadCrop.croppie( 'bind', {
                    url: canvas.toDataURL( 'image/png' )
                } )
                .then(
                    function ( value ) {
                        $uploadCrop.croppie( 'setZoom', 0 );
                    },
                    function ( reason ) {
                        console.error( 'Image binding failed. Reason: ', reason );
                    }
                );
        }
        img.src = e.target.result;
    }
    reader.readAsDataURL(this.files[0]);
});

Если вставить в начале обработчика alert('test'); - он срабатывает мгновенно, тоесть выбрал файл и мгновенно срабатывает функция, но .show() срабатывает только через несколько секунд. Пробовал включать отображение без jquery, простым js - тоже самое. Подскажите, в чем может быть проблема.

READ ALSO
Непонятное поведение api.openweathermap.org

Непонятное поведение api.openweathermap.org

Всем приветНаписал простенький код для телеграм бота:

255
Как устранить Google API 403 Forbidden?

Как устранить Google API 403 Forbidden?

Похоже что мое клиентское приложение действует только для одного аккаунтаКак сделать возможным использовать его для всех?

225
проверка формы на валидность/ javaScript

проверка формы на валидность/ javaScript

Добрый день уважаемые, подскажите, пожалуйста где я допускаю ошибку и почему мой простенький валидатор не работает

363