İşlevin doğru şekilde çözümlendiğinden emin olmak için 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.
res.redirect()
,res.send()
veyares.end()
ile HTTP işlevlerini sonlandırın.return;
ifadesiyle eşzamanlı bir işlevi sonlandırma.
JavaScript'in vaatleri ile eşzamansız kodları basitleştirin
Promise'ler, zaman uyumsuz kod için geri çağırma işlevlerine modern bir alternatiftir. Söz, 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
işlevinin sonucunu döndürdüğünüzde, dizeyi veritabanına yazmayla ilgili eşzamansız çalışma tamamen 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. Aşağıda, tipik durumları gösteren birkaç örnek verilmiştir:
- Gerçek Zamanlı Veritabanı tetikleyicisi: bir HTTP işlevi ve ardından gelen 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