"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Quando dissociar funções de retorno de chamada de sucesso de chamadas jQuery Ajax?

Quando dissociar funções de retorno de chamada de sucesso de chamadas jQuery Ajax?

Publicado em 2024-11-03
Navegar:537

When to Decouple Success Callback Functions from jQuery Ajax Calls?

Desacoplando funções de retorno de chamada de sucesso de chamadas jQuery Ajax

Ao recuperar dados de um servidor usando jQuery ajax, é uma prática comum definir o sucesso função de retorno de chamada dentro do bloco .ajax(). Isso une fortemente o tratamento de retorno de chamada com a chamada AJAX, limitando a flexibilidade e a reutilização.

Para definir o retorno de chamada de sucesso fora do bloco .ajax(), normalmente é declarada uma variável para armazenar os dados retornados. No entanto, uma abordagem mais moderna usando objetos adiados é recomendada.

Desde o jQuery 1.5, os objetos adiados oferecem uma maneira melhor de lidar com operações assíncronas, como chamadas AJAX. Veja como você pode conseguir isso:

function getData() {
    return $.ajax({
        url : 'example.com',
        type: 'GET'
    });
}

function handleData(data /* , textStatus, jqXHR */ ) {
    alert(data);
    //do some stuff
}

getData().done(handleData);

Essa abordagem separa o tratamento de retorno de chamada da chamada AJAX, permitindo vários retornos de chamada, tratamento de erros e sincronização de eventos assíncronos com facilidade.

Por exemplo :

// Timer for demo purposes, resolves itself after 5 seconds
var timer = $.Deferred();
setTimeout(timer.resolve, 5000);

// Get data using AJAX and attach done and error handlers
var ajax = getData().done(handleData).fail(error);

// Wait for both AJAX and timer to finish before continuing
$.when(timer, ajax).done(function() {
    // Both AJAX and 5s timer have finished
});

// Additional callbacks can be added even after AJAX call finishes
ajax.done(function(data) {
    //Do some stuff with data
});

Isso demonstra o poder dos objetos diferidos, permitindo maior controle e flexibilidade sobre operações assíncronas em aplicativos jQuery.

Declaração de lançamento Este artigo foi reimpresso em: 1729250296 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3