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