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

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

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

  • हल कार्यों है कि एक वापस लौट कर अतुल्यकालिक प्रसंस्करण (जिसे "पृष्ठभूमि कार्यों" कहा जाता है) प्रदर्शन जावास्क्रिप्ट वादा
  • साथ HTTP कार्यों बर्खास्त res.redirect() , res.send() , या res.end()
  • एक के साथ एक तुल्यकालिक समारोह बर्खास्त return; बयान।

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

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

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

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

निम्नलिखित कोड एक 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!');
  });
});

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

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