सिंक करना, एक साथ काम नहीं करने वाली सुविधा, और प्रॉमिस

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