Avatar ·

Cómo obtener el resultado de una solicitud asíncrona y devolverlo desde una función

¡Hola a todos! Soy nuevo en JavaScript y me encontré con un problema que no puedo resolver. Escribo un código simple que hace una solicitud AJAX a una API e intenta devolver los datos obtenidos, pero siempre obtengo undefined. Aquí está mi 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 de success:', userData); // ¡Los datos están aquí!
        }
    });
    
    return userData; // Siempre undefined
}

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

Entiendo que el problema es la asincronía: la función getUserData devuelve el valor antes de que llegue la respuesta del servidor. Pero, ¿cómo obtener correctamente los datos y usarlos más adelante en el código? He probado diferentes opciones: variables globales, setTimeout, pero nada funciona.