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

किसी फ़ंक्शन के लाइफ़साइकल को मैनेज करना ज़रूरी है, ताकि यह पक्का किया जा सके कि वह सही तरीके से ठीक हो. फ़ंक्शन को सही तरीके से खत्म करके, उन फ़ंक्शन से ज़्यादा शुल्क से बचा जा सकता है जो बहुत लंबे समय तक चलते हैं या लगातार लूप में चलते हैं. साथ ही, यह भी पक्का किया जा सकता है कि आपके फ़ंक्शन को चलाने वाला Cloud Functions, आपके फ़ंक्शन के बंद होने की स्थिति या स्थिति तक पहुंचने से पहले बंद न हो.

अपने फ़ंक्शन के लाइफ़साइकल को मैनेज करने के लिए, सुझाए गए इन तरीकों का इस्तेमाल करें:

  • JavaScript का प्रॉमिस इस्तेमाल करके, एसिंक्रोनस प्रोसेसिंग (जिसे "बैकग्राउंड फ़ंक्शन" भी कहा जाता है) करने वाले फ़ंक्शन ठीक करें.
  • एचटीटीपी फ़ंक्शन को res.redirect(), res.send() या res.end() से खत्म करें.
  • return; स्टेटमेंट वाले सिंक्रोनस फ़ंक्शन को खत्म करें.

JavaScript वादों के साथ एसिंक्रोनस कोड को आसान बनाएं

प्रॉमिस, एसिंक्रोनस कोड के लिए कॉलबैक का एक आधुनिक विकल्प है. प्रॉमिस एक कार्रवाई को दिखाता है और आने वाले समय में वह वैल्यू वापस आ सकती है. इसकी मदद से, सिंक्रोनस कोड में कोशिश करने/कैच करने से मिलती-जुलती गड़बड़ियां भी लागू की जा सकती हैं. Firebase SDK टूल में, Firebase ब्लॉग पर जाकर वादों के बारे में पढ़ा जा सकता है. साथ ही, MDN पर सामान्य तौर पर प्रॉमिस देखी जा सकती है.

प्रॉमिस, फ़ंक्शन के साथ कैसे काम करता है

जब किसी फ़ंक्शन में JavaScript का प्रॉमिस दिखाया जाता है, तो वह फ़ंक्शन तब तक चलता रहता है, जब तक प्रॉमिस रिज़ॉल्व नहीं हो जाता या उसे अस्वीकार नहीं किया जाता. यह बताने के लिए कि फ़ंक्शन ने अपना काम सफलतापूर्वक पूरा कर लिया है, प्रॉमिस रिज़ॉल्व होना चाहिए. गड़बड़ी दिखाने के लिए, प्रॉमिस को अस्वीकार कर देना चाहिए. इसका मतलब है कि आपको सिर्फ़ अपनी पसंद की गड़बड़ियों को हैंडल करना होगा.

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