किसी फ़ंक्शन के लाइफ़साइकल को मैनेज करना ज़रूरी है, ताकि यह ठीक से काम करे. फ़ंक्शन को सही तरीके से बंद करके, उन फ़ंक्शन से ज़्यादा शुल्क लिए जाने से बचा जा सकता है जो बहुत ज़्यादा समय तक चलते हैं या हमेशा लूप में चलते रहते हैं. इसके अलावा, यह भी पक्का किया जा सकता है कि Cloud Functions इंस्टेंस, फ़ंक्शन के बंद होने की शर्त या स्थिति तक पहुंचने से पहले बंद न हो.
अपने फ़ंक्शन के लाइफ़साइकल को मैनेज करने के लिए, सुझाए गए इन तरीकों का इस्तेमाल करें:
- एसिंक्रोनस प्रोसेसिंग (इसे "बैकग्राउंड फ़ंक्शन" भी कहा जाता है) करने वाले फ़ंक्शन को हल करने के लिए, JavaScript प्रॉमिस दिखाएं.
res.redirect(),res.send()याres.end()का इस्तेमाल करके, एचटीटीपी फ़ंक्शन बंद करें.return;स्टेटमेंट का इस्तेमाल करके, सिंक्रोनस फ़ंक्शन को खत्म करें.
JavaScript प्रॉमिस की मदद से एसिंक्रोनस कोड को आसान बनाना
प्रॉमिस, एसिंक्रोनस कोड के लिए कॉल बैक का आधुनिक विकल्प है. प्रॉमिस, किसी ऑपरेशन और उससे मिलने वाली वैल्यू को दिखाता है. यह आपको सिंक्रोनस कोड में try/catch की तरह ही गड़बड़ियों को आगे बढ़ाने की सुविधा भी देता है. The Firebase Blog पर, 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 कोड के सैंपल में, फ़ंक्शन को सही तरीके से बंद करने के उदाहरण शामिल होते हैं. यहां कुछ उदाहरण दिए गए हैं, जिनसे सामान्य मामलों के बारे में पता चलता है:
- रीयलटाइम डेटाबेस ट्रिगर: एक एचटीटीपी फ़ंक्शन, जिसके बाद रीडायरेक्ट किया जाता है
- Cloud Storage
ट्रिगर:
स्टोरेज से डाउनलोड करने के बाद
then - रीयलटाइम डेटाबेस में वेबहुक
लिखें:
thenक्लॉज़ में थ्रो की गई गड़बड़ी - समय-समय पर इस्तेमाल न किए गए खातों को मिटाना: प्रॉमिस अस्वीकृत किया गया