সিঙ্ক, অ্যাসিঙ্ক এবং প্রতিশ্রুতি

একটি ফাংশনের লাইফসাইকেল পরিচালনা করা গুরুত্বপূর্ণ, যাতে এটি সঠিকভাবে রিজলভ হয়। ফাংশনগুলোকে সঠিকভাবে টার্মিনেট করার মাধ্যমে, আপনি দীর্ঘক্ষণ ধরে চলা বা অসীমভাবে লুপ করা ফাংশনগুলোর কারণে সৃষ্ট অতিরিক্ত চার্জ এড়াতে পারেন। এছাড়াও, আপনি নিশ্চিত করতে পারেন যে আপনার ফাংশনটি সফলভাবে টার্মিনেটিং কন্ডিশন বা স্টেটে পৌঁছানোর আগে, যে Cloud Functions ইনস্ট্যান্সটি এটি চালাচ্ছে তা যেন বন্ধ না হয়ে যায়।

আপনার ফাংশনগুলোর জীবনচক্র পরিচালনা করতে এই প্রস্তাবিত পদ্ধতিগুলো ব্যবহার করুন:

  • জাভাস্ক্রিপ্ট প্রমিজ রিটার্ন করার মাধ্যমে অ্যাসিঙ্ক্রোনাস প্রসেসিং সম্পাদনকারী ফাংশনগুলোকে (যা "ব্যাকগ্রাউন্ড ফাংশন" নামেও পরিচিত) সমাধান করুন।
  • res.redirect() , res.send() , বা res.end() ব্যবহার করে HTTP ফাংশন সমাপ্ত করুন।
  • একটি সিনক্রোনাস ফাংশনকে return; স্টেটমেন্ট দিয়ে বন্ধ করুন।

জাভাস্ক্রিপ্ট প্রমিজ ব্যবহার করে অ্যাসিঙ্ক্রোনাস কোড সহজ করুন

অ্যাসিঙ্ক্রোনাস কোডের জন্য কলব্যাকের একটি আধুনিক বিকল্প হলো প্রমিস। একটি প্রমিস একটি অপারেশন এবং এর দ্বারা ভবিষ্যতে ফেরত আসতে পারে এমন একটি মানকে উপস্থাপন করে। এটি আপনাকে সিঙ্ক্রোনাস কোডের try/catch-এর মতোই এরর ছড়ানোর সুযোগও দেয়। আপনি ফায়ারবেস ব্লগে ফায়ারবেস এসডিকে-এর প্রমিস সম্পর্কে এবং এমডিএন- এ সাধারণভাবে প্রমিস সম্পর্কে পড়তে পারেন।

How promises work with functions

যখন আপনি কোনো ফাংশনে একটি জাভাস্ক্রিপ্ট প্রমিস রিটার্ন করেন, তখন সেই ফাংশনটি ততক্ষণ চলতে থাকে যতক্ষণ না প্রমিসটি রিজলভ বা রিজেক্ট হয়। একটি ফাংশন সফলভাবে তার কাজ সম্পন্ন করেছে তা বোঝাতে, প্রমিসটি রিজলভ হওয়া উচিত। কোনো ত্রুটি বোঝাতে, প্রমিসটি রিজেক্ট হওয়া উচিত। এর মানে হলো, আপনি কেবল সেই ত্রুটিগুলোই হ্যান্ডেল করবেন যা আপনি করতে চান।

নিম্নলিখিত কোডটি একটি Firebase Realtime Database 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 কোড স্যাম্পলে সঠিক ফাংশন সমাপ্তির উদাহরণ অন্তর্ভুক্ত রয়েছে। এখানে কয়েকটি সাধারণ উদাহরণ দেওয়া হলো: