من المهم إدارة دورة حياة الدالة لضمان حلّها بشكل صحيح. من خلال إنهاء الوظائف بشكل صحيح، يمكنك تجنب الرسوم الزائدة. من الدوال التي تعمل لفترة طويلة جدًا أو المتكررة إلى ما لا نهاية. يمكنك أيضًا التأكد من عدم إيقاف المثيل Cloud Functions الذي يُشغِّل الدالة قبل أن تصل الدالة بنجاح إلى حالة أو حالة الإنهاء.
استخدِم الأساليب المقترَحة التالية لإدارة دورة حياة دوالّك:
- حلّ الدالات التي تُجري معالجة غير متزامنة (المعروفة أيضًا باسم "الدوالّ التي تعمل في الخلفية") من خلال عرض وعد JavaScript
- إنهاء دوال HTTP باستخدام
res.redirect()
أوres.send()
أوres.end()
- يمكنك إنهاء دالة متزامنة باستخدام عبارة
return;
.
تبسيط الرمز غير المتزامن باستخدام وعود JavaScript
وعدّات هي بديل حديث لطلبات الاستدعاء للرمز غير المتزامن. وعد العملية والقيمة المستقبلية التي قد تنتجها. كما يتيح لك نشر أخطاء مشابهة للمحاولة/الالتقاط في رمز متزامن. يمكنك القراءة عن الإمكانات المتاحة في حزمة تطوير البرامج (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 عيّنات الرمز البرمجي أمثلة على إنهاء الدالة بشكل صحيح. في ما يلي بعض الأمثلة التي توضّح الحالات الشائعة:
- قاعدة بيانات الوقت الفعلي المشغّل: دالة HTTP متبوعة بعملية إعادة توجيه
- Cloud Storage
العامل المشغِّل:
تنزيل مساحة تخزين متبوعًا بـ
then
- الردّ التلقائي على الويب في قاعدة بيانات "الوقت الفعلي"
write:
خطأ تمّ طرحه داخل عبارة
then
- حذف الحسابات غير المستخدَمة بشكل دوري : وعد تم رفضه