كلمة الإدارة |
كلمة الإدارة |
تنبيه هام جداً |
أضف رد جديد |
07-04-2019, 06:07 PM | #1 |
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
|
تاريخ التسجيل: Feb 2019
العمر: 38
المشاركات: 1,149
التقييم: 10
ما هو الفرق بين الوعود والكولباك في الجافاسكريبت ؟
إذا كنت مبرمج جافاسكريبت محترف فمن المؤكد أنه سبق لك أن عملت بدوال الإجابة Callbacks وفي بعض الحالات تكون مجبرا على استعمال دالة إجابة داخل دالة إجابة داخل دالة إجابة وهكذا (بالخصوص عند التعامل مع أوامر غير متزامنة Asynchronous كعمليات الأجاكس والتعامل مع الملفات وقواعد البيانات إلخ…) حتى تحصل على شفرة برمجية هرمية الشكل ومعقدة نسبيا كما سترى في الكود التالي :
function isUserTooYoung(id, callback) { openDatabase(function(db) { getCollection(db, 'users', function(col) { find(col, {'id': id},function(result) { result.filter(function(user) { callback(user.age < 18) } } } } } 1 2 3 4 5 6 7 8 9 10 11 function isUserTooYoung(id, callback) { openDatabase(function(db) { getCollection(db, 'users', function(col) { find(col, {'id': id},function(result) { result.filter(function(user) { callback(user.age < 18) } } } } } الدالة isUserTooYoung تمكننا من التأكد من كون مستعمل معين راشد (يفوق عمره 18 سنة)، ولهذا يتم ربط الإتصال بقاعدة البيانات، ثم البحث عن المستعمل المراد معرفة عمره وفي الأخير نقوم بالتأكد من العمر. استعمال الوعود Promises استعمال الوعود Promises سنرى بأنه يعطينا شفرة برمجية أوضح وأبسط وأكثر دلالية، فكل دالة تنتظر جوابا تتوفر على الدالة then التي تلتقط الإجابة من الدالة التي قبلها وتمررها للدالة الثانية بداخلها، وبهذه المفهوم أصبح بإمكاننا إعادة كتابة الكود السابق بطريقة مغايرة أكثر أناقة كما يلي : function isUserTooYoung(id) { return openDatabase(db) .then(getCollection) .then(find.bind(null, {'id': id})) .then(function(user) { return user.age < 18; }); } 1 2 3 4 5 6 7 8 function isUserTooYoung(id) { return openDatabase(db) .then(getCollection) .then(find.bind(null, {'id': id})) .then(function(user) { return user.age < 18; }); } هذا كود في Node.js ولكن الفكرة والعملية تظل صحيحة بالنسبة للتطبيقات الأخرى للجافاسكريبت. بالتأكيد الآن أصبح الكود أكثر وضوحا بالنسبة لكم وأسهل من حيث الفهم، حيث يمكننا القول بأن الدالة openDatabase وعدت الدالة getCollection بالتوصل بمعطيات معينة Datas بعد نجاح الإتصال بقاعدة البيانات، ولو أردنا استعمال الدالة isUserTooYoung في برنامجنا بعد ذلك فسيكون بهذه الطريقة : isUserTooYoung(id) .then(function(result) { // هنا يمكنك التعامل مع النتيجة النهائيةresult } 1 2 3 4 isUserTooYoung(id) .then(function(result) { // هنا يمكنك التعامل مع النتيجة النهائيةresult } لا تنسى أن هناك دوالا أخرى مفيدة عند استعمال الوعود في الجافاسكريبت مثل دالة catch التي يتم استدعاؤها عند عدم نجاح إحدى العمليات أو الوعود. هناك العديد من المكتبات التي تمكننا من العمل بالوعود Promises بسهولة وفعالية أكبر لعل أشهرها :
المصدر: منتديات رحيل لكل العرب - من قسم: قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress |
اقتباس |
أضف رد جديد |
الذين يشاهدون محتوى الموضوع الآن : 1 ( الأعضاء 0 والزوار 1) | |
|
|
المواضيع المتشابهه | ||||
الموضوع | كاتب الموضوع | المنتدى | مشاركات | آخر مشاركة |
ما هو معني function overloading في لغة الجافاسكريبت | raheel | قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress | 0 | 07-04-2019 06:10 PM |
ما هو الفرق بين NativeScript و React Native | raheel | قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress | 0 | 01-04-2019 07:16 PM |
ما هو الفرق بين Two-way data binding و One-way data binding | raheel | قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress | 0 | 01-04-2019 06:44 PM |
الفرق بين WordPress.org و WordPress.com شرح شامل | القيصر | قسم تطوير المواقع ومحركات البحث والسيو Seo والووردبريس WordPress | 0 | 11-03-2019 05:39 AM |
الفرق بين السنة والعام | العبوق | المواضيع العامة | 0 | 17-11-2018 07:03 PM |