Bir işlevin yaşam döngüsünü yönetmek, işlevin düzgün şekilde çözülmesini sağlamak için önemlidir. Fonksiyonları doğru şekilde sonlandırarak çok uzun süre çalışan veya sonsuz döngüye giren fonksiyonlardan kaynaklanan aşırı ücretlendirmeleri ö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 kapanmadığından da emin olabilirsiniz.
İşlevlerinizin yaşam döngüsünü yönetmek için önerilen bu yaklaşımları kullanın:
- Eşzamansız işleme gerçekleştiren işlevleri (aynı zamanda "arka plan işlevleri" olarak da bilinir) JavaScript promise döndürerek çözün.
res.redirect(),res.send()veyares.end()ile HTTP işlevlerini sonlandırın.return;ifadesiyle senkron bir işlevi sonlandırın.
JavaScript sözleriyle zaman uyumsuz kodu basitleştirme
Promise'lar, zaman uyumsuz kod için geri çağırmalara modern bir alternatiftir. Promise, bir işlemi ve döndürebileceği gelecekteki değeri temsil eder. Ayrıca, senkron kodda try/catch'e benzer şekilde hataları yaymanıza da olanak tanır. Firebase SDK'sındaki sözler hakkında Firebase Blogu'nda, genel olarak sözler hakkında ise MDN'de bilgi edinebilirsiniz.
Sözlerin işlevlerle çalışma şekli
Bir işlev için JavaScript promise döndürdüğünüzde bu işlev, promise çözülene veya reddedilene kadar çalışmaya devam eder. Bir işlevin çalışmasını başarıyla tamamladığını belirtmek için sözün yerine getirilmesi gerekir. Bir hatayı belirtmek için promise reddedilmelidir. Bu sayede yalnızca istediğiniz hataları işleyebilirsiniz.
Aşağıdaki kod, Firebase Realtime Database ref alır ve değerini "world!" olarak ayarlar. 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ğlamdaki örnekler
Cloud Functions Kod örneklerimizin çoğunda işlevin uygun şekilde sonlandırılmasıyla ilgili örnekler yer alır. Aşağıda, tipik durumları gösteren birkaç örnek verilmiştir:
- Realtime Database tetikleyicisi: yönlendirme ile devam eden bir HTTP işlevi
- Cloud Storage
tetikleyicisi:
thenile birlikte depolama alanı indirme işlemi - Realtime Database'e yazma işlemi için webhook:
thenifadesinin içinde hata oluştu - Kullanılmayan hesapları düzenli olarak silme: Reddedilen bir söz