1
resposta

não consigo fazer esta função socket.emit dar um retorno para fora do seu escopo

estou declarando uma variável global, quando faço uma conexão com o socket eu envio o usuário e espero a resposta em response, eu consigo colocar ela na DIV #msgs, porem não consigo setar ela na variável global, no alerta ela sempre vai estar indefinida. alguém sabe como setar a resposta do socket em uma variável global ou fazer a função socket.emit dar um retorno ?

var global;
function buttonClicked()
{
    var usuario= $('#usuario').val();    

    socket.emit('verificartablet', {nome: usuario}, function(response) {
        $("#msgs").append( response);    
        global=  response;        
    });

    alert(global);
}
1 resposta

Bom dia, Aléxis! Como vai?

Nesse caso, a forma correta seria vc manipular o response dentro da tal função que é chamada de função callback! Fora dela, o JS não tem como saber o valor do response e nem como saber que vc atribuiu o valor do response à sua variável global uma vez que a operação que executa a função callback é assíncrona!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!