المزامنة وعدم المزامنة والحصول على وعود

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

استخدِم الأساليب المقترَحة التالية لإدارة دورة حياة دوالّك:

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

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

وعدّات هي بديل حديث لطلبات الاستدعاء للرمز غير المتزامن. يمثّل الوعد عملية والقيمة المستقبلية التي قد يعرضها. ويتيح لك أيضًا نشر الأخطاء المشابهة لـ try/catch في الرمز المتزامن. يمكنك الاطّلاع على معلومات عن التعهدات في حزمة تطوير البرامج (SDK) لمنصّة Firebase على مدوّنة Firebase، والتعهدات بشكل عام على MDN.

آلية عمل الوعود مع الدوالّ

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

تأخذ التعليمة البرمجية التالية Firebase Realtime Database ref وتضبط قيمتها على "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!');
  });
});

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

تتضمّن معظم Cloud Functions عيّنات الرمز البرمجي أمثلة على إنهاء الدالة بشكل صحيح. في ما يلي بعض الأمثلة التي توضّح الحالات الشائعة: