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

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

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

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

জাভাস্ক্রিপ্ট প্রতিশ্রুতি দিয়ে অ্যাসিঙ্ক্রোনাস কোড সহজ করুন

প্রতিশ্রুতিগুলি অ্যাসিঙ্ক্রোনাস কোডের জন্য কলব্যাকের একটি আধুনিক বিকল্প। একটি প্রতিশ্রুতি একটি অপারেশন প্রতিনিধিত্ব করে এবং ভবিষ্যতের মান এটি ফেরত দিতে পারে। এটি আপনাকে সিঙ্ক্রোনাস কোডে চেষ্টা/ক্যাচের মতো ত্রুটিগুলি প্রচার করতে দেয়। আপনি Firebase ব্লগে Firebase SDK-এ প্রতিশ্রুতি এবং 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 কোড নমুনায় যথাযথ ফাংশন সমাপ্তির উদাহরণ অন্তর্ভুক্ত রয়েছে। এখানে কয়েকটি সাধারণ কেস প্রদর্শন করে:

,

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

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

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

জাভাস্ক্রিপ্ট প্রতিশ্রুতি দিয়ে অ্যাসিঙ্ক্রোনাস কোড সহজ করুন

প্রতিশ্রুতিগুলি অ্যাসিঙ্ক্রোনাস কোডের জন্য কলব্যাকের একটি আধুনিক বিকল্প। একটি প্রতিশ্রুতি একটি অপারেশন প্রতিনিধিত্ব করে এবং ভবিষ্যতের মান এটি ফেরত দিতে পারে। এটি আপনাকে সিঙ্ক্রোনাস কোডে চেষ্টা/ক্যাচের মতো ত্রুটিগুলি প্রচার করতে দেয়। আপনি Firebase ব্লগে Firebase SDK-এ প্রতিশ্রুতি এবং 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 কোড নমুনায় যথাযথ ফাংশন সমাপ্তির উদাহরণ অন্তর্ভুক্ত রয়েছে। এখানে কয়েকটি সাধারণ কেস প্রদর্শন করে: