Check out what’s new from Firebase at Google I/O 2022. Learn more

सिंक, एसिंक्स और वादे

यह सुनिश्चित करने के लिए कि यह ठीक से हल हो जाए, किसी फ़ंक्शन के जीवनचक्र को प्रबंधित करना महत्वपूर्ण है। कार्यों को सही ढंग से समाप्त करके, आप उन कार्यों से अत्यधिक शुल्क से बच सकते हैं जो बहुत लंबे समय तक चलते हैं या असीमित रूप से लूप करते हैं। साथ ही, आप यह सुनिश्चित कर सकते हैं कि आपके फ़ंक्शन को चलाने वाला क्लाउड फ़ंक्शन इंस्टेंस आपके फ़ंक्शन के सफलतापूर्वक समाप्त होने की स्थिति या स्थिति तक पहुंचने से पहले बंद नहीं होता है।

अपने कार्यों के जीवनचक्र को प्रबंधित करने के लिए इन अनुशंसित तरीकों का उपयोग करें:

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

जावास्क्रिप्ट वादों के साथ अतुल्यकालिक कोड को सरल बनाएं

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

कार्यों के साथ वादे कैसे काम करते हैं

जब आप किसी फ़ंक्शन के लिए एक जावास्क्रिप्ट वादा वापस करते हैं, तो वह फ़ंक्शन तब तक चलता रहता है जब तक कि वादा हल या अस्वीकार नहीं किया जाता है। यह इंगित करने के लिए कि एक समारोह ने अपना काम सफलतापूर्वक पूरा कर लिया है, वादा हल किया जाना चाहिए। त्रुटि को इंगित करने के लिए, वादे को अस्वीकार कर दिया जाना चाहिए। इसका मतलब है कि आपको केवल उन त्रुटियों को संभालने की जरूरत है जो आप चाहते हैं।

निम्नलिखित कोड एक फायरबेस रीयलटाइम डेटाबेस 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!');
  });
});

संदर्भ में उदाहरण

हमारे अधिकांश क्लाउड फ़ंक्शंस कोड नमूनों में उचित फ़ंक्शन समाप्ति के उदाहरण शामिल हैं। यहाँ कुछ ऐसे हैं जो विशिष्ट मामलों को प्रदर्शित करते हैं: