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

aninhamento de funções e seus callbacks

Vejam essa situação, bem corriqueira, o form faz um post de um novo produto em um cadastro de produtos. Nesse cadastro preciso ver se a informação categoria é uma categoria já existente na tabela de categorias ou se é uma nova categoria que está sendo criada. Nesse caso, tenho de aninhar a gravacao do novo produto dentro do retorno do callback que vai pesquisar as categorias?

- Faço os asserts para os erros de validacao comuns
var produtosDAO = new app.infra.ProdutosDAO(app);
        produtosDAO.buscaCategoria(cadastro.nm_categoria, function(erros, resultados){
                if(resultados!='[]'){            
                    -se nova categoria adiciono mais um erro de validacao para isso
                    --renderizo os erros de validacao (1) 
                }
                 else{
                    --se nao tiver erros de validacao anteriores
                        Faço a gravacao. 
                    --mas se tiver erros de validacao anteriores
                        renderizo erros de validacao(2)
                }

Notei que se não aninhar, a gravacao pode acontecer antes que a resposta da existência da categoria seja emitida. Se sim, Isso pode produzir muita confusão, não? Porque dentro desses aninhamentos, dependendo da resposta, teremos vários caminhos e em alguns deles acabarei por duplicar código (1) e (2).

e só aproveitando, esse (resultados!='[]') é assim mesmo? Para ver quando um select não retorna nada?

1 resposta
solução!

Oi Jaqueline, esse eh o famoso callback hell :(... Problema clássico em ambientes assíncronos... Tenta dar uma olhada em Promises, elas tem a ideia de minimizar isso.

Vc pode usar a propriedade length do array e testar o tamanho dele.