Eşzamanlı ve eş zamansız içerikler, taahhütler

İş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() veya res.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: