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