JAVASCRIPT - COMO CHAMAR FUNÇÃO ENCADEADA ?

 Tópico anterior Próximo tópico Novo tópico

JAVASCRIPT - COMO CHAMAR FUNÇÃO ENCADEADA ?

ASP.NET

 Compartilhe  Compartilhe  Compartilhe
#489990 - 14/08/2019 12:23:58

VERAPALI
CURITIBA
Cadast. em:Dezembro/2003


Pessoal

Minha funcao generica apiLoadListBox executa um $.getJson, mas como eu generalizei ela para ser algo facil de usar, como eu encaixo ela com varios exemplos que vejo por ai de .success() ?

function carregarListaPai()
{
    var atual = $('#pai').data('value');
    apiLoadListbox('#pai', 'listbox/produtopai', true, {id:$('#id').val(), tipo:$('#tipo').val()});
    setTimeout(function() { $("#pai").val(atual); }, 1000);
}


Vejam que eu estou esperando via timer (que nao e recomendado) o carregamento, eu queria fazer algo como no sucesso de apiLoadListBox() entao chame outra funcao, e possivel considerando que eu generalizei ela  ?

function apiLoadListbox(target, url, addselect = true, params = null)
{
    $(target).empty();
    
    if (addselect == true)
    {
        var tmp = $("<option></option>");
        tmp.val(0);
        tmp.text('Selecione');
        $(target).append(tmp);
    }
    
    inputFeedbackSpin(target);
    $.getJSON(apiCall(url), params , function(data) {
        if (Array.isArray(data))
        {
            $.each(data, function(jkey, jitem) {
                var tmp = $("<option></option>");
                tmp.val(jitem.id);
                tmp.text(jitem.nome);
                $(target).append(tmp);
            });
            inputFeedbackSpin(target, false);
        }
    }).fail(function(){
        inputFeedbackSpin(target, false);
    });    
}



Já li esses aqui
https://api.jquery.com/jquery.when/
https://2ality.com/2015/11/sequential-execution.html
https://stackoverflow.com/questions/27012556/make-synchronous-function-in-javascript

Mas nao entendi bem como fazer, queria fazer algo como
apiLoad().then(funcao2);


Alguem tem uma luz, eu acho que estou perto, mas nao sei onde estou errando


Vera Lucia


#489991 - 14/08/2019 12:29:41

VERAPALI
CURITIBA
Cadast. em:Dezembro/2003


Até resolvi com uma pequena mudança na função, mas gostaria de entender como ligar as execuções...
  function carregarListaPai()
{
    var atual = $('#pai').data('value');
    apiLoadListbox('#pai', 'listbox/produtopai', true, {id:$('#id').val(), tipo:$('#tipo').val()}, atual);
}


E adicionei o parametro value...
  
function apiLoadListbox(target, url, addselect = true, params = null, value = null)
{
    $(target).empty();
    
    if (addselect == true)
    {
        var tmp = $("<option></option>");
        tmp.val(0);
        tmp.text('Selecione');
        $(target).append(tmp);
    }
    
    inputFeedbackSpin(target);
    $.getJSON(apiCall(url), params , function(data) {
        if (Array.isArray(data))
        {
            $.each(data, function(jkey, jitem) {
                var tmp = $("<option></option>");
                tmp.val(jitem.id);
                tmp.text(jitem.nome);
                $(target).append(tmp);
            });
            if (value != null && value != undefined)
            {
                 $(target).val(value);            
            }
            inputFeedbackSpin(target, false);
        }
    }).fail(function(){
        inputFeedbackSpin(target, false);
    });    
}


Vera Lucia


 Tópico anterior Próximo tópico Novo tópico


Tópico encerrado, respostas não sao permitidas
Encerrado por VERAPALI em 05/09/2019 15:03:17