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 dares.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:
- Realtime Database tetikleyicisi: Bir HTTP işlevi ve ardından yönlendirme
- Cloud Storage tetikleyicisi:
Depolama alanı indirme işleminin ardından
then
- Realtime Database yazma işleminde webhook:
then
yan tümcesinde oluşan bir hata - Kullanılmayan hesapları düzenli olarak silme: Reddedilen bir söz