সিঙ্ক, এসিঙ্ক ও প্রমিস

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

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

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

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

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

ফাংশনের সাথে প্রমিস কীভাবে কাজ করে

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

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