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.

questionAnswers(2)

yourAnswerToTheQuestion