Bir işlevin yaşam döngüsünü, doğru şekilde çözümlendiğinden emin olmak için yönetmek önemlidir. İşlevleri doğru bir şekilde sonlandırarak, çok uzun süre çalışan veya sonsuz döngüye alan işlevlerden dolayı fazla ücret alınmasını önleyebilirsiniz. Ayrıca, işleviniz sonlandırma koşuluna veya durumuna başarıyla ulaşmadan önce işlevinizi çalıştıran Cloud Functions örneğinin kapanmamasını sağlayabilirsiniz.
İşlevlerinizin yaşam döngüsünü yönetmek için aşağıdaki önerilen yaklaşımlardan yararlanın:
- Eşzamansız işlem ("arka plan işlevleri" olarak da bilinir) gerçekleştiren işlevleri, bir JavaScript vaadi döndürerek çözün.
- HTTP işlevlerini
res.redirect()
,res.send()
veyares.end()
ile sonlandırın. return;
ifadesiyle eşzamansız bir işlevi sonlandırın.
JavaScript vaatleriyle eşzamansız kodu basitleştirin
Vaatler, eşzamansız kod için geri çağırmaların modern bir alternatifidir. Vaat, bir işlemi ve bunun getirebileceği gelecekteki değeri temsil eder. Ayrıca eşzamanlı kodda dene-yakala benzeri hatalar yayabilmenizi sağlar. Firebase SDK'sındaki taahhütler hakkında bilgi edinmek için Firebase Blogu'na, genel olarak ise MDN'ye göz atabilirsiniz.
Vaatlerin işlevlerle işleyiş şekli
Bir işleve JavaScript sözü döndürdüğünüzde, söz konusu işlev, söz konusu işlev sonlandırılana veya reddedilene kadar çalışmaya devam eder. Bir işlevin çalışmasını başarıyla tamamladığını belirtmek için söz verilen sözün çözümlenmesi gerekir. Bir hatayı belirtmek için sözün reddedilmesi gerekir. Bu, yalnızca istediğiniz hataları ele almanız gerektiği anlamına gelir.
Aşağıdaki kod bir Firebase Realtime Database'i (ref
) alır ve değerini "world!"
olarak ayarlar. set
sonucunu döndürdüğünüzde, eşzamansız olarak dize yazma işlemi tamamlanana kadar işlevinizin çalışmaya devam edeceği 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 uygun işlev sonlandırma örnekleri içerir. Yaygın durumları gösteren birkaç örneği aşağıda bulabilirsiniz:
- Realtime Database tetikleyicisi: Bir yönlendirmenin ardından gelen HTTP işlevi
- Cloud Storage tetikleyicisi: Depolama alanı indirme ve ardından
then
- Realtime Database'de Webhook'u Yazma:
then
ifadesi içine eklenen hata - Kullanılmayan hesapları düzenli olarak silin: Reddedilen söz