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

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

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

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

JavaScript वादों के साथ एसिंक्रोनस कोड को आसान बनाएं

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