مهم است که چرخه عمر یک تابع را مدیریت کنید تا مطمئن شوید که به درستی حل می شود. با پایان دادن صحیح توابع، میتوانید از شارژ بیش از حد عملکردهایی که برای مدت طولانی اجرا میشوند یا بینهایت حلقه میزنند، جلوگیری کنید. همچنین، میتوانید مطمئن شوید که نمونه Cloud Functions که عملکرد شما را اجرا میکند، قبل از اینکه عملکرد شما با موفقیت به وضعیت یا وضعیت پایان خود برسد، خاموش نمیشود.
از این رویکردهای توصیه شده برای مدیریت چرخه عمر عملکردهای خود استفاده کنید:
- توابعی را که پردازش ناهمزمان انجام می دهند (همچنین به عنوان "توابع پس زمینه" شناخته می شوند) با بازگرداندن یک وعده جاوا اسکریپت حل کنید.
- توابع HTTP را با
res.redirect()
,res.send()
یاres.end()
خاتمه دهید. - خاتمه یک تابع همزمان با
return;
بیانیه
کدهای ناهمزمان را با وعده های جاوا اسکریپت ساده کنید
Promises یک جایگزین مدرن برای فراخوانی برای کد ناهمزمان است. یک وعده بیانگر یک عملیات و مقدار آتی است که ممکن است برگرداند. همچنین به شما امکان میدهد خطاهایی شبیه به try/catch را در کدهای همزمان منتشر کنید. می توانید در مورد وعده ها در Firebase SDK در وبلاگ Firebase و به طور کلی وعده ها در MDN بخوانید.
نحوه عملکرد وعده ها با توابع
هنگامی که یک وعده جاوا اسکریپت را به یک تابع برمی گردانید، آن تابع تا زمانی که وعده حل و فصل نشود یا رد شود به کار خود ادامه می دهد. برای نشان دادن اینکه یک تابع کار خود را با موفقیت انجام داده است، وعده باید حل شود. برای نشان دادن خطا، قول باید رد شود. این بدان معنی است که شما فقط باید خطاهایی را که می خواهید مدیریت کنید.
کد زیر یک ref
Firebase Realtime Database می گیرد و مقدار آن را روی "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 ما شامل نمونههایی از خاتمه عملکرد مناسب است. در اینجا چند مورد وجود دارد که موارد معمولی را نشان می دهد:
- راهانداز پایگاه داده بیدرنگ : یک تابع HTTP به دنبال آن یک تغییر مسیر
- راهانداز ذخیرهسازی ابری : دانلود فضای ذخیرهسازی و سپس
then
- Webhook در پایگاه داده بلادرنگ بنویسد : یک خطا در داخل عبارت
then
انداخته شده است - حذف دوره ای حساب های استفاده نشده : یک قول رد شده