Avatar ·

Comment obtenir le résultat d'une requête asynchrone et le retourner depuis une fonction ?

Bonjour à tous ! Je suis débutant en JavaScript et j'ai rencontré un problème que je n'arrive pas à résoudre. J'écris un code simple qui fait une requête AJAX vers une API et tente de retourner les données reçues, mais j'obtiens toujours undefined. Voici mon code :

function getUserData(userId) {
    let userData;
    
    $.ajax({
        url: 'https://api.example.com/users/' + userId,
        method: 'GET',
        success: function(response) {
            userData = response;
            console.log('Dans success :', userData); // Les données sont là !
        }
    });
    
    return userData; // Toujours undefined
}

const result = getUserData(42);
console.log('À l'extérieur :', result); // undefined

Je comprends que le problème vient de l'asynchronisme — la fonction getUserData retourne une valeur avant que la réponse du serveur n'arrive. Mais comment faire pour obtenir correctement les données et les utiliser ensuite dans le code ? J'ai essayé différentes approches : variables globales, setTimeout, mais rien n'a fonctionné.