Avatar ·

كيف تحصل على نتيجة طلب غير متزامن وتعيدها من الدالة؟

مرحباً بالجميع! أنا مبتدئ في JavaScript وواجهت مشكلة لا أستطيع حلها. أكتب كوداً بسيطاً يقوم بعمل طلب AJAX إلى API ويحاول إرجاع البيانات المستلمة، لكنني دائماً أحصل على 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، لكن لا شيء.