Avatar ·

Como obter o resultado de uma requisição assíncrona e retorná-lo de uma função?

Olá a todos! Sou novo em JavaScript e me deparei com um problema que não consigo resolver. Estou escrevendo um código simples que faz uma requisição AJAX a uma API e tenta retornar os dados obtidos, mas sempre recebo undefined. Aqui está meu código:

function getUserData(userId) {
    let userData;
    
    $.ajax({
        url: 'https://api.example.com/users/' + userId,
        method: 'GET',
        success: function(response) {
            userData = response;
            console.log('Dentro do success:', userData); // Os dados estão aqui!
        }
    });
    
    return userData; // Sempre undefined
}

const result = getUserData(42);
console.log('Fora:', result); // undefined

Eu entendo que o problema é a assincronicidade — a função getUserData retorna o valor antes de a resposta do servidor chegar. Mas como então obter os dados corretamente e usá-los no código? Tentei várias abordagens: variáveis globais, setTimeout, mas nada