Avatar ·

如何获取异步请求的结果并从函数中返回它?

大家好!我是 JavaScript 新手,遇到了一个无法解决的问题。我写了一个简单的代码,向 API 发送 AJAX 请求并尝试返回获取的数据,但总是得到 undefined。这是我的代码:

function getUserData(userId) {
    let userData;
    
    $.ajax({
        url: 'https://api.example.com/users/' + userId,
        method: 'GET',
        success: function(response) {
            userData = response;
            console.log('在 success 内部:', userData); // 数据存在!
        }
    });
    
    return userData; // 总是 undefined
}

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

我明白问题在于异步——getUserData 函数在服务器响应到达之前就返回了值。但如何正确获取数据并在代码中继续使用呢?我尝试了不同的方法:全局变量、setTimeout,但都没有成功。