xmlhttprequest не работает должным образом в функции

Кто-нибудь знает, почему upload.onprogress не работает правильно, если он находится на отдельной функции?

Код работает правильно (индикатор выполнения медленно перемещается):

        xhr.upload.onprogress = function(e) {
            if (e.lengthComputable) {
                progress.value = (e.loaded / e.total) * 100;
            }
        };  

но если я введу его в работу, он больше не будет работать:

xhr.upload.onprogress = uploadProgress(event);

function uploadProgress(e) {
    if (e.lengthComputable) {
        progress.value = (e.loaded / e.total) * 100;
    }
}   

Во втором коде индикатор выполнения сразу переходит на 100% после того, как файл закончен, вместо того, чтобы переместиться на 100% во время загрузки

Итак, я попробовал предоставленное решение, оно действительно работает, если я помещу функцию внутрь. Нет ли способа вывести его за пределы функции?

        function uploadFile(blobFile, fileName) {
            ...
            ...

            // Listen to the upload progress for each upload.
            xhr.upload.onprogress = uploadProgress;

            // Progress Bar Calculation why it has to be in uploadFile function..
            function uploadProgress(e) {
                if (e.lengthComputable) {
                    progress.value = (e.loaded / e.total) * 100;
                }
            }                            

            uploaders.push(xhr);
            xhr.send(fd);
        }  

        //it does not work if I put it outside the function. is there anyway to do this?  
        function uploadProgress(e) {
             if (e.lengthComputable) {
                 progress.value = (e.loaded / e.total) * 100;
             }
        }   

Ответы на вопрос(3)

Ваш ответ на вопрос