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, hedeflerin işlevinizi çalıştıran Cloud Functions örneğinin kapatmadığından işleviniz sonlandırma durumuna veya durumuna başarıyla ulaşmadan önce kullanır.

İşlevlerinizin yaşam döngüsünü yönetmek için şu önerilen yaklaşımlardan yararlanın:

  • Eşzamansız işleme ("arka plan işlevleri" olarak da bilinir) gerçekleştiren işlevleri JavaScript taahhüt edin.
  • HTTP işlevlerini res.redirect(), res.send() ya da res.end().
  • return; ifadesiyle eşzamanlı bir işlevi sonlandırma.

JavaScript'in vaatleri ile eşzamansız kodları basitleştirin

Vaatler, eşzamansız kod için geri çağırmaların modern bir alternatifidir. Vaat 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 görevini başarıyla tamamladığını belirtmek için söz çözülmelidir. Alıcı: bir hata belirtiyorsa vaat reddedilmelidir. Bu durumda tek yapmanız gereken istediğiniz hataları ele alın.

Aşağıdaki kod Firebase Realtime Database ref değerini alır ve değerini "world!". set sonucunu döndürerek işlevinizin, dizeyi veritabanına yazma işleminin eşzamansız çalışması 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. Çevik yaklaşımın tipik durumlar: