Firebase is back at Google I/O on May 10! Register now

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

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

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

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

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

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

वादे अतुल्यकालिक कोड के लिए कॉलबैक का एक आधुनिक विकल्प हैं। एक वादा एक ऑपरेशन का प्रतिनिधित्व करता है और भविष्य का मूल्य यह वापस आ सकता है। यह आपको सिंक्रोनस कोड में कोशिश/पकड़ने के समान त्रुटियों को प्रचारित करने देता है। आप Firebase ब्लॉग पर Firebase SDK में वादों के बारे में पढ़ सकते हैं और सामान्य रूप से 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!');
  });
});

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

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