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

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

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

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

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

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