3
respostas

Callback, return e argumentos

Eu tenho algumas dúvidas que persistem, mesmo depois do curso de Javascript, como funciona o callback, quando eu passo argumento na função e quando eu retorno uma função.

No exemplo de connection tem que retornar uma função dentro da outra por causa do argumento que foi definido no express, não tem outra forma de resolver sem ter que reotornar função dentro de função?

3 respostas

Oi Gisele, a função dentro de função, se é que entendi a sua pergunta, é por conta do express-load... que já invoca todos os módulos definidos por vc. Sem ele, a gente poderia exportar uma função normal...

Na verdade era em um dos exemplos que tinha:

module.exports = function(){
    return function(connection) {
        this.lista = function(callback){
            connection.query('select * from produtos',callback);
            }
            console.log(this);
            return this;
    };
}

Acho que encontrei um exemplo que ilustra a minha dúvida, os arquivos produtos.js e ProdutosDao estão ligados e tem funções de callback.

O que me confunde é qual função está chamando a outra, onde a função foi criada e onde o valor é passado, exemplo:

Essa função é que faz a conexão com o banco? O que é esse primeiro callback e o segundo?

 ProdutosDAO.prototype.lista = function(callback){
    this._connection.query('select * from livros', callback);
}

Essa é a função que recebe os dados do banco e coloca os dados na página?

  produtosBanco.lista(function(erros, resultados){
             res.format({
                html: function(){
                    res.render("produtos/lista",{lista:resultados});
                },
                json: function(){
                    res.json(resultados);
                }
            });
        });

        connection.end();
   };


    app.get("/produtos", listaProdutos);

Parece um dúvida boba, mas depois que o código está pronto, eu esqueço quem depende de quem e isso me ajudaria a entender melhor como funcionam as funções.