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