Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

JavaScript - Função Atualiza

Fiquei com um dúvida com relação a função Atualiza.

A função atualiza é chamada de dentro da função decrementa, certo?

No entanto a função atualiza foi criada, pedindo o parâmetro resposta

Minha dúvida é, porque no script não foi necessário passar/informar o parâmetro no momento em que a função atualiza foi chamada? $.post(url, params, atualiza);

<script>

    function decrementa(produtoId) {
        var url = "@Url.Action("DecrementaQuantidade", "Produto")";
        var params = { id: produtoId };
        $.post(url, params, atualiza);
        }

    function atualiza(resposta) {

        var elemento = $("#quantidade" + resposta.Id);
        elemento.html(resposta.Quantidade);
    }

</script>
1 resposta
solução!

Olá Diego, a função 'atualiza' foi passada para $.post como uma variável, no javascript pode-se usar funções como variáveis também, atribuí-las a outras variáveis e passá-las como argumento para funções, por exemplo.

var proxyParaAtualiza = atualiza;
proxyParaAtualiza('teste'); //igual atualiza('teste');

No seu caso, a função '$.post' chama a função que é passada no último parâmetro quando a url invocada retornar a resposta, isso pode demorar 5 segundos ou mais, então o resto do código continua a ser executado de forma assíncrona até que, em algum momento, o '$.post' retorna e chama sua função 'atualiza' passando o resultado da chamada http como parâmetro pra sua função. A sua função 'atualiza' é o que chamamos no javascript de função de callback.