A função retorna o valor antes que o carregamento da imagem do Jquery seja executado
if (DataService.Validation(file)) {
//angularjs call to api controller
};
//DataService
Validation: function (file) {
var Url = URL.createObjectURL(file);
var img = new Image();
$(img).load(function () {
var imgwidth = this.width;
var imgheight = this.height;
if (imgheight > 400) {
viewModel.ErrorMessage = 'The Image height cannot be more then 400 px.';
return false;
}
});
img.src = Url;
if (file == null) {
viewModel.ErrorMessage = 'Please select a file to upload.';
return false;
}
if (viewModel.Name == null) {
viewModel.ErrorMessage = 'Name is a required field.';
return false;
}
return true;
}
A função de validação acima está completando a execução e retornando true sem que o código dentro da função img load esteja marcado. Isso significa que, mesmo que a imagem seja maior que 400px, a validação retornará true, pois o código dentro da carga é executado após um longo tempo, uma vez que todo o A chamada de jquery ajax é enviada para o controlador api. O que estou tentando obter é que a validação não deve retornar o valor até que o código dentro do carregamento da imagem seja executado.