função javascript concluída sem chamada ajax
-
21-12-2019 - |
Pergunta
Eu quero fazer uma função que suporte done
mas sem retornar ajax.
function checkAndReturn(){
if(global.id){
return global.id; // the problem might be here
}else{
return $.get("http://someurl.com",null,function(){...})
}
}
Aqui checkAndReturn.done(function(){...})
funciona se global.id
não está disponível, mas não está funcionando se global.id
está disponível.
Eu acho que deveria retornar qualquer outro objeto e encaixotar meus dados nesse objeto para fazer meu trabalho funcionar, talvez xhr
?.
Solução
Você deve retornar um (resolvido) jQuery Deferred
objeto.O jqXHR
objeto retornado pelas funções AJAX do jQuery é derivado de Deferred
também, então a "interface" da sua função estará limpa - sua função retornará um Deferred
em todo o caso.
Você poderia fazer algo assim (apenas um exemplo, adapte ao seu caso de uso):
function checkAndReturn(){
if (global.id){
return $.Deferred().resolve(global.id);
}
else {
return $.get("http://someurl.com", null, function(){...})
}
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow