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 bir şekilde sonlandırarak, çok uzun süre çalışan veya sonsuz döngüye giren işlevlerden kaynaklanan aşırı yükleri önleyebilirsiniz. Ayrıca, işlevinizi çalıştıran Cloud Functions örneğinin, işleviniz başarıyla sonlandırma koşuluna veya durumuna ulaşmadan kapanmadığından emin olabilirsiniz.
İşlevlerinizin yaşam döngüsünü yönetmek için bu önerilen yaklaşımları kullanın:
- Bir JavaScript taahhüdü 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. - Eşzamanlı bir işlevi bir
return;
ifade.
JavaScript vaatleriyle eşzamansız kodu basitleştirin
Sözler, zaman uyumsuz kod için geri aramalara modern bir alternatiftir. Taahhüt, bir işlemi ve bunun getirebileceği gelecekteki değeri temsil eder. Aynı zamanda, senkron kodda try/catch benzeri hataları yaymanıza da izin verir. Firebase Blog'daki Firebase SDK'sındaki taahhütler ve MDN'deki genel taahhütler hakkında bilgi edinebilirsiniz.
Vaatler işlevlerle nasıl çalışır?
Bir işleve bir JavaScript taahhüdü döndürdüğünüzde, söz konusu işlev, vaat çözülene veya reddedilene kadar çalışmaya devam eder. Bir fonksiyonun işini başarıyla tamamladığını belirtmek için, taahhüdün çözülmesi gerekir. Bir hatayı belirtmek için söz reddedilmelidir. Bu, yalnızca istediğiniz hataları işlemeniz gerektiği anlamına gelir.
Aşağıdaki kod bir Firebase Realtime Database ref
alır ve değerini "world!"
olarak ayarlar. . set
sonucunu döndürerek, dizeyi veritabanına yazmanın eşzamansız çalışması tamamen tamamlanana kadar işlevinizin ç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ğu, uygun işlev sonlandırma örnekleri içerir. İşte tipik vakaları gösteren birkaç tanesi:
- Gerçek Zamanlı Veritabanı tetikleyicisi : bir HTTP işlevi ve ardından bir yönlendirme
- Bulut Depolama tetikleyicisi : Bir depolama indirmesi ve
then
ardından - Webhook on Realtime Database write : Bir
then
yan tümcesi içinde atılan bir hata - Kullanılmayan hesapları periyodik olarak silin : Reddedilen bir söz