Функция обещания вызывается немедленно:
this.initializeCheckImage(file).done(check = this.checkDimensions());
Функция done
должна принимать в качестве параметра executer
:
Функция, переданная с аргументами, разрешает и отклоняет.
Функция executor выполняется немедленно Promise
реализация, передача функций разрешения и отклонения (исполнитель
вызывается до того, как конструктор Promise даже возвращает созданное
объект).
Так что это должна быть только ссылка для работы, обратите внимание, что когда вы вызываете ее с помощью checkDimensions (), JS немедленно выполняет функцию.
Таким образом, вам потребуется заключить его в ссылку на функцию, но проблема в том, что контекст функции изменился и checkDimensions()
больше не существует в новом контексте.
Чтобы сохранить контекст переменной измерения, вы можете вызвать функцию checkDimensions
из img.onload
с помощью:
if (checkDimensions(img.width, img.height)) {
return d.resolve();;
}
else {
return d.reject("Wrong dimensions");
}
this.initializeCheckImage(file)
.then(() => console.log("RESOLVED"))
.catch(() => console.log("REJECTED"));
Edit:
Чтобы сохранить контекст требуемого объекта, вы можете использовать связывание с bind ().
var readerOnload = function(e) {
//code
}
reader.onload = readerOnload.bind(this);
Или с:
var self = this;
reader.onload = function() {
//you can use self
}
В вашем случае придется сделать это еще раз для imgOnload
.