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()
veyares.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. Promise, 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:
- 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