مهم است که چرخه عمر یک تابع را مدیریت کنید تا مطمئن شوید که به درستی حل می شود. با پایان دادن صحیح توابع، میتوانید از شارژ بیش از حد عملکردهایی که برای مدت طولانی اجرا میشوند یا بینهایت حلقه دارند، جلوگیری کنید. همچنین، میتوانید مطمئن شوید که نمونه توابع ابری که عملکرد شما را اجرا میکند، قبل از اینکه عملکرد شما با موفقیت به وضعیت یا حالت پایان خود برسد، خاموش نمیشود.
از این رویکردهای توصیه شده برای مدیریت چرخه عمر عملکردهای خود استفاده کنید:
- توابعی را که پردازش ناهمزمان انجام می دهند (همچنین به عنوان "توابع پس زمینه" شناخته می شوند) با بازگرداندن یک وعده جاوا اسکریپت حل کنید.
- توابع 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!');
});
});
نمونه هایی در زمینه
بیشتر نمونههای کد توابع ابری ما شامل نمونههایی از خاتمه عملکرد مناسب است. در اینجا چند مورد وجود دارد که موارد معمولی را نشان می دهد:
- راهانداز پایگاه داده بیدرنگ : یک تابع HTTP و به دنبال آن یک تغییر مسیر
- راهانداز ذخیرهسازی ابری : دانلود فضای ذخیرهسازی و
then
- Webhook در پایگاه داده بلادرنگ بنویسد : یک خطا در داخل عبارت
then
انداخته شده است - حذف دوره ای حساب های استفاده نشده : یک قول رد شده