همگام سازی، همگام سازی، و وعده ها

مدیریت چرخه حیات یک تابع برای اطمینان از حل شدن صحیح آن بسیار مهم است. با خاتمه دادن صحیح توابع، می‌توانید از هزینه‌های اضافی ناشی از توابعی که برای مدت طولانی اجرا می‌شوند یا حلقه‌های بی‌نهایت ایجاد می‌کنند، جلوگیری کنید. همچنین، می‌توانید مطمئن شوید که نمونه Cloud Functions که تابع شما را اجرا می‌کند، قبل از اینکه تابع شما با موفقیت به شرایط یا حالت خاتمه خود برسد، خاموش نمی‌شود.

از این رویکردهای پیشنهادی برای مدیریت چرخه حیات توابع خود استفاده کنید:

  • توابعی را که پردازش ناهمزمان (که به عنوان "توابع پس‌زمینه" نیز شناخته می‌شوند) انجام می‌دهند، با برگرداندن یک promise جاوا اسکریپت، حل می‌کنند.
  • توابع HTTP را با res.redirect() ، res.send() یا res.end() خاتمه دهید.
  • یک تابع همگام را با دستور return; خاتمه دهید.

ساده‌سازی کد ناهمزمان با استفاده از promiseهای جاوا اسکریپت

Promiseها جایگزین مدرنی برای callbackها در کد ناهمگام هستند. یک Promise نشان‌دهنده یک عملیات و مقداری است که در آینده ممکن است برگرداند. همچنین به شما امکان می‌دهد خطاهایی مشابه try/catch را در کد همگام منتشر کنید. می‌توانید در مورد Promiseها در Firebase SDK در وبلاگ Firebase و Promiseها به طور کلی در MDN مطالعه کنید.

نحوه کار promiseها با توابع

وقتی یک promise جاوا اسکریپت را به یک تابع برمی‌گردانید، آن تابع تا زمانی که promise حل یا رد شود، به اجرا ادامه می‌دهد. برای نشان دادن اینکه یک تابع کار خود را با موفقیت انجام داده است، promise باید حل شود. برای نشان دادن یک خطا، promise باید رد شود. این بدان معناست که شما فقط باید خطاهایی را که می‌خواهید مدیریت کنید.

کد زیر یک 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 ما شامل نمونه‌هایی از خاتمه صحیح تابع هستند. در اینجا چند مورد از موارد معمول را نشان می‌دهیم: