المزامنة ، غير المتزامن ، والوعود

من المهم إدارة دورة حياة الوظيفة لضمان حلها بشكل صحيح. من خلال إنهاء الوظائف بشكل صحيح ، يمكنك تجنب الشحنات الزائدة من الوظائف التي تعمل لفترة طويلة جدًا أو تتكرر بلا حدود. يمكنك أيضًا التأكد من أن مثيل Cloud Functions الذي يشغل وظيفتك لا يتم إغلاقه قبل أن تصل وظيفتك بنجاح إلى حالة الإنهاء أو الحالة.

استخدم هذه الأساليب الموصى بها لإدارة دورة حياة وظائفك:

  • قم بحل الوظائف التي تؤدي معالجة غير متزامنة (تُعرف أيضًا باسم "وظائف الخلفية") عن طريق إرجاع وعد JavaScript .
  • قم بإنهاء وظائف HTTP باستخدام res.redirect() أو res.send() أو res.end() .
  • إنهاء وظيفة متزامنة مع return; بيان.

تبسيط التعليمات البرمجية غير المتزامنة مع وعود JavaScript

الوعود هي بديل حديث لعمليات الاسترجاعات للشفرة غير المتزامنة. يمثل الوعد عملية والقيمة المستقبلية التي قد ترجعها. كما يتيح لك نشر أخطاء مشابهة للتجربة / الالتقاط في التعليمات البرمجية المتزامنة. يمكنك أن تقرأ عن الوعود في Firebase SDK على مدونة Firebase ، والوعود بشكل عام على MDN .

كيف تعمل الوعود مع الوظائف

عندما تعيد وعد JavaScript إلى وظيفة ، تستمر هذه الوظيفة في العمل حتى يتم الوفاء بالوعد أو رفضه. للإشارة إلى أن إحدى الوظائف قد أكملت عملها بنجاح ، يجب الوفاء بالوعد. للإشارة إلى خطأ ، يجب رفض الوعد. هذا يعني أنك تحتاج فقط إلى معالجة الأخطاء التي تريدها.

تأخذ الكود التالي ref قاعدة بيانات Firebase Realtime وتعيّن قيمتها على "world!" . من خلال إعادة نتيجة set ، يتم ضمان استمرار عمل وظيفتك حتى اكتمال العمل غير المتزامن لكتابة السلسلة إلى قاعدة البيانات بالكامل:

// Always change the value of "/hello" to "world!"
exports.hello = functions.database.ref('/hello').onWrite(event => {
  // set() returns a promise. We keep the function alive by returning it.
  return event.data.ref.set('world!').then(() => {
    console.log('Write succeeded!');
  });
});

أمثلة في السياق

تتضمن معظم عينات كود وظائف السحابة الخاصة بنا أمثلة على الإنهاء الصحيح للوظيفة. فيما يلي بعض الحالات التي توضح الحالات النموذجية: