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?.

Foi útil?

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(){...})
    }
}

Demonstração jsFiddle

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top