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

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