Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

CrazyLOL

Promises e Deffered

Recommended Posts

E ai galera, estou estudando sobre estes itens e estou com dúvidas em como aplica-lás em meus projetos.

Atualmente utilizo callback para tudo porém a estrutura do código fica tensa.. e na internet encontrei bastante artigos falando sobres as Promises e Deffered.. porém não consegui entender como que ficaria na prática isto..

 

Se não for abusar, mas já abusando, gostaria de entender como que ficaria a seguinte situação, tenho 3 funções e cada uma possui um callback, sendo assim a funcão 2 só é chamada quando a função uma termina e me retorna o callback de seus dados, assim a função executa e depois chama a função 3, e desta maneira sucessivamente para mais funções caso tivesse.

 

Então meu código ficaria da seguinte maneira (esse código é um exemplo apenas)

function funcao1(callback){
	$.ajax({
                type: "POST",
                url: minhaUrlPost,
                data: {
                  acao: 'CarregaDadosCliente',
                  codigo: codigo
                },                            
                dataType: "json", 
                success: function (json){
                  return callback(json);
                },error: function (){
                  alert("deu erro")
                }
    });
}

function funcao2(cod_cliente,callback){
	$.ajax({
                type: "POST",
                url: minhaUrlPost,
                data: {
                  acao: 'CarregaPedidosCliente',
                  codigo: cod_cliente
                },                            
                dataType: "json", 
                success: function (json){
                  return callback(json);
                },error: function (){
                  alert("deu erro")
                }
    });
}

function funcao3(cod_pedido,callback){
	$.ajax({
                type: "POST",
                url: minhaUrlPost,
                data: {
                  acao: 'CarregaItensPedidoCliente',
                  codigo: cod_pedido
                },                            
                dataType: "json", 
                success: function (json){
                  return callback(json);
                },error: function (){
                  alert("deu erro")
                }
    });
}

funcao1(function(json){
	funcao2(json.cod_cliente, function(json){
		funcao3(json.cod_pedido, function(json){
			//faz alguma coisa ou chamaria mais functions...
		});
	});
});

O exemplo acima funciona? Funciona 'perfeitamente' a minha necessidade, porém sei que pode melhorar o meu código.

E gostaria de um exemplo desta situação utilizando os Deffered da vida...

 

Agradeço a ajuda antecipadamente.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.