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

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

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

  • जावास्क्रिप्ट वादे को लौटाकर एसिंक्रोनस प्रोसेसिंग (जिसे "बैकग्राउंड फ़ंक्शन" भी कहा जाता है) करने वाले फ़ंक्शंस को हल करें।
  • HTTP फ़ंक्शन को res.redirect() , res.send() , या res.end() के साथ समाप्त करें।
  • एक सिंक्रोनस फ़ंक्शन को 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!');
  });
});

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

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