सिंक करना, एक साथ काम नहीं करने वाली सुविधा, और प्रॉमिस

किसी फ़ंक्शन के लाइफ़साइकल को मैनेज करना ज़रूरी है, ताकि यह पक्का किया जा सके कि वह ठीक से काम करे. फ़ंक्शन को सही तरीके से बंद करके, उन फ़ंक्शन से होने वाले ज़्यादा शुल्कों से बचा जा सकता है जो बहुत ज़्यादा समय तक चलते हैं या अनलिमिटेड लूप में चलते हैं. साथ ही, यह पक्का किया जा सकता है कि आपका फ़ंक्शन, बंद होने की शर्त या स्थिति तक पहुंचने से पहले, आपका फ़ंक्शन चलाने वाला Cloud Functions इंस्टेंस बंद न हो जाए.

अपने फ़ंक्शन के लाइफ़साइकल को मैनेज करने के लिए, सुझाए गए इन तरीकों का इस्तेमाल करें:

  • JavaScript प्रोमिस दिखाकर, असाइनॉन्स प्रोसेसिंग करने वाले फ़ंक्शन को रिज़ॉल्व करें. इन्हें "बैकग्राउंड फ़ंक्शन" भी कहा जाता है.
  • res.redirect(), res.send() या res.end() का इस्तेमाल करके, एचटीटीपी फ़ंक्शन को खत्म करें.
  • return; स्टेटमेंट की मदद से, सिंक्रोनस फ़ंक्शन को खत्म करें.

JavaScript प्रॉमिस की मदद से, एसिंक्रोनस कोड को आसान बनाना

प्रॉमिस, एसिंक्रोनस कोड के लिए कॉलबैक का आधुनिक विकल्प है. प्रॉमिस, किसी कार्रवाई और आने वाले समय में रिटर्न की जाने वाली वैल्यू के बारे में बताता है. इससे, सिंक्रोनस कोड में try/catch की तरह गड़बड़ियों को प्रसारित करने की सुविधा भी मिलती है. Firebase ब्लॉग पर, Firebase SDK टूल में मौजूद प्रॉमिस के बारे में पढ़ा जा सकता है. साथ ही, 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 कोड के सैंपल में, फ़ंक्शन को सही तरीके से खत्म करने के उदाहरण शामिल होते हैं. यहां कुछ सामान्य उदाहरण दिए गए हैं: