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

من المهم إدارة دورة حياة الوظيفة للتأكد من حلها بشكل صحيح. من خلال إنهاء الوظائف بشكل صحيح، يمكنك تجنب الرسوم الزائدة من الوظائف التي تعمل لفترة طويلة جدًا أو تتكرر بشكل لا نهائي. يمكنك أيضًا التأكد من أن مثيل 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!');
  });
});

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

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