السلام عليكم

بحثت وقرأت عدة صفحات عن شرح كل من الـ Promises والـ $q Object عند استعمال factory أو Services في Angular ولكن هناك الكثييير من المصطلحات التي لم أستطع فهمها .. ولذلك لم أستطع فهم المعنى العام ومتى نستعمل هذه المكتبة وهذا الكائن $q .. هل أجد أحداً هنا يستطيع شرحها لي بطريقة مبسطة ؟؟

أريد استخدام factory في Angular بهذا الشكل:

    .factory('MyService', function($q) {
     return {
                findAll: function() {
                    var deferred = $q.defer();
                    deferred.resolve(students);
                    return deferred.promise; 
                    }
            }
        });

ماذا يمثل $q هنا ؟؟

وماذا نعني بـ $q.defer() ؟؟

وماذا أعاد لنا التابع findAll ؟؟ من الواضح أنه سيعيد لي جميع الطلاب الذين قمت بتخزينهم في هذا الـ Factory ... فهمت ذلك ولكنني إلى الآن لم أستطع فهم هذه المتحولات وعن ماذا تعبر وأين نستخدمها ؟ ولماذا اضطررنا لاستخدامها ؟؟ أما كان بإمكاني أن أجلب الطلاب students مباشرةً ودون اللجوء لهذه المكتبة والكائن $q ؟؟

شكراً سلفاً لمن سيجيبني :)