Eşzamanlı ve eş zamansız içerikler, taahhütler

Düzgün bir şekilde çözüldüğünden emin olmak için bir işlevin yaşam döngüsünü yönetmek önemlidir. İşlevleri doğru şekilde sonlandırarak çok uzun süre çalışan veya sonsuz döngüde çalışan işlevlerden aşırı ücret alınmasını önleyebilirsiniz. Ayrıca, işlevinizi çalıştıran Cloud Functions örneğinin, işleviniz sonlandırma koşuluna veya durumuna başarıyla ulaşmadan önce kapanmamasını sağlayabilirsiniz.

İşlevlerinizin yaşam döngüsünü yönetmek için aşağıdaki önerilen yaklaşımları kullanın:

  • JavaScript promise döndürerek eşzamansız işleme ("arka plan işlevleri" olarak da bilinir) gerçekleştiren işlevleri çözün.
  • HTTP işlevlerini res.redirect(), res.send() veya res.end() ile sonlandırın.
  • return; ifadesiyle eşzamanlı bir işlevi sonlandırma.

JavaScript umutları ile eşzamansız kodu basitleştirme

Promise'ler, zaman uyumsuz kod için geri çağırma işlevlerine modern bir alternatiftir. Söz, bir işlemi ve döndürebileceği gelecekteki değeri temsil eder. Ayrıca, zaman uyumlu kodda try/catch'e benzer şekilde hataları yaymanıza olanak tanır. Firebase SDK'sındaki taahhütlere Firebase Blogu'ndan, genel olarak taahhütlere ise MDN'den ulaşabilirsiniz.

Sözler, işlevlerle nasıl çalışır?

Bir işleve JavaScript vaadi döndürdüğünüzde, söz konusu işlev, söz çözülene veya reddedilene kadar çalışmaya devam eder. Bir işlevin işini başarıyla tamamladığını belirtmek için söz çözülmelidir. Hata belirtmek için promise reddedilmelidir. Yani yalnızca istediğiniz hataları ele almanız gerekir.

Aşağıdaki kod, bir Firebase Realtime Database ref alır ve değerini "world!" olarak ayarlar. set sonucunu döndürerek işlevinizin, dizenin veritabanına yazılmasıyla ilgili eşzamansız çalışma tamamen tamamlanana kadar çalışmaya devam etmesi garanti edilir:

// 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!');
  });
});

Bağlam içinde örnekler

Cloud Functions Kod örneklerimizin çoğu, işlevlerin düzgün şekilde sonlandırılmasına dair örnekler içerir. Aşağıda, tipik durumları gösteren birkaç örnek verilmiştir: