Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

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

קל לארגן דפים בעזרת אוספים אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.

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

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

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

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

הבטחות הן חלופה מודרנית להתקשרות חוזרת עבור קוד אסינכרוני. הבטחה מייצגת פעולה ואת הערך העתידי שהיא עשויה להחזיר. זה גם מאפשר לך להפיץ שגיאות דומות לנסות/לתפוס בקוד סינכרוני. אתה יכול לקרוא על הבטחות ב-Firebase SDK ב- The Firebase Blog , והבטחות באופן כללי ב- 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!');
  });
});

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

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