Check out what’s new from Firebase at Google I/O 2022. Learn more

סנכרון, אסינכרון והבטחות

חשוב לנהל את מחזור החיים של פונקציה כדי להבטיח שהיא תיפתר כראוי. על ידי סיום נכון של פונקציות, אתה יכול למנוע חיובים מוגזמים מפונקציות הפועלות זמן רב מדי או בלולאה אינסופית. כמו כן, אתה יכול לוודא שהמופע של Cloud Functions שמריץ את הפונקציה שלך לא נכבה לפני שהפונקציה שלך מגיעה בהצלחה למצב או למצב הסיום שלה.

השתמש בגישות המומלצות הבאות כדי לנהל את מחזור החיים של הפונקציות שלך:

  • פתור פונקציות שמבצעות עיבוד אסינכרוני (הידוע גם בשם "פונקציות רקע") על ידי החזרת הבטחת JavaScript .
  • סיום פונקציות HTTP עם res.redirect() , res.send() או res.end() .
  • סיום פונקציה סינכרונית עם return; הַצהָרָה.

פשט קוד אסינכרוני עם הבטחות JavaScript

הבטחות הן חלופה מודרנית להתקשרות חוזרת עבור קוד אסינכרוני. הבטחה מייצגת פעולה ואת הערך העתידי שהיא עשויה להחזיר. זה גם מאפשר לך להפיץ שגיאות דומות לנסות/לתפוס בקוד סינכרוני. אתה יכול לקרוא על הבטחות ב-Firebase SDK בבלוג של Firebase , ועל הבטחות באופן כללי ב- MDN .

איך הבטחות עובדות עם פונקציות

כאשר אתה מחזיר הבטחת JavaScript לפונקציה, פונקציה זו ממשיכה לפעול עד שההבטחה תיפתר או תדחה. כדי לציין שפונקציה סיימה את עבודתה בהצלחה, יש לפתור את ההבטחה. כדי להצביע על טעות, יש לדחות את ההבטחה. זה אומר שאתה צריך לטפל רק בשגיאות שאתה רוצה.

הקוד הבא לוקח ר"פ של Firebase ref 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!');
  });
});

דוגמאות בהקשר

רוב דוגמאות הקוד של פונקציות הענן שלנו כוללות דוגמאות לסיום תפקוד נכון. להלן כמה המדגימים מקרים טיפוסיים: