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

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

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

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

JavaScript प्रॉमिस की मदद से, एसिंक्रोनस कोड को आसान बनाना

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

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

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