Ошибка из этого раздела:
reader.onload = function(evt) {
this.callbackRead(this, file, evt, callbackProgress, callbackFinal);
};
Проблема в том, что this
относится к неправильному объекту. Ваш обработчик onload
отличается от окружающего кода, и всякий раз, когда вы вводите новую функцию, значение this
изменяется.
Существует несколько возможных решений.
Псевдоним this
:
const that = this;
reader.onload = function(evt) {
that.callbackRead(that, file, evt, callbackProgress, callbackFinal);
};
Переплет this
:
reader.onload = function(evt) {
this.callbackRead(this, file, evt, callbackProgress, callbackFinal);
}.bind(this);
Использование функции стрелки, которая не изменит значение this
:
reader.onload = evt => {
this.callbackRead(this, file, evt, callbackProgress, callbackFinal);
};