Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Senkronizasyon, zaman uyumsuz ve vaatler

Düzgün bir şekilde çözümlendiğinden 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üklenmeleri ö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 döndürerek (aynı zamanda "arkaplan fonksiyonları" olarak bilinir) uyumsuz işlem gerçekleştirmek Çöz işlevleri JavaScript sözünü .
  • HTTP fonksiyonları sonlandırma res.redirect() , res.send() veya res.end() .
  • Bir senkronize bir fonksiyonu sonlandırma return; Beyan.

JavaScript vaatleriyle eşzamansız kodu basitleştirin

Sözler, zaman uyumsuz kod için geri aramalara modern bir alternatiftir. Bir söz, bir işlemi ve geri getirebileceği gelecekteki değeri temsil eder. Ayrıca, eşzamanlı kodda dene/yakalaya benzer hataları yaymanıza da olanak tanır. Üzerinde Firebase SDK'deki vaat okuyabilirsiniz Firebase Blog üzerinde genel olarak ve vaatlerle MDN .

Sözler işlevlerle nasıl çalışır?

Bir işleve bir 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. 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 Gerçek Zamanlı Veri Tabanı alır ref ve onun değerini ayarlar "world!" . Sonucunu dönerek set , sizin fonksiyon veritabanına dize yazma asenkron çalışma tamamen tamamlanana kadar çalışmasını sağlamak için 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

Bizim Bulut İşlevleri çoğu kod örnekleri düzgün fonksiyon fesih örneklerini içerir. İşte tipik vakaları gösteren birkaç tanesi: