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 JavaScript vaadi döndürerek zaman uyumsuz işleme ("arka plan işlevleri" olarak da bilinir) gerçekleştiren işlevleri çözümleyin.
  • res.redirect() , res.send() veya res.end() ile HTTP işlevlerini sonlandırın.
  • Eşzamanlı bir işlevi bir 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. Firebase SDK'daki vaatleri Firebase Blog'da ve vaatleri genel olarak MDN'de okuyabilirsiniz.

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 Realtime Database ref alır ve değerini "world!" olarak ayarlar. . set sonucunu döndürerek, işlevinizin, dizeyi veritabanına yazmanın eşzamansız çalışması tamamen tamamlanana kadar ç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

Bulut İşlevleri kod örneklerimizin çoğu, uygun işlev sonlandırma örnekleri içerir. İşte tipik vakaları gösteren birkaç tanesi: