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

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

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

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

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

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

كيفية عمل الوعود مع الدوال

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

يأخذ الرمز التالي قاعدة بيانات Firebase في الوقت الفعلي 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 التابعة لنا أمثلة على إنهاء الدالة بشكل صحيح. إليك بعض الحالات التي توضح الحالات النموذجية: