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