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

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

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

  • يمكنك حلّ الدوال التي تؤدي إلى معالجة غير متزامنة (المعروفة أيضًا باسم "وظائف الخلفية") من خلال عرض وعد 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!');
  });
});

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

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