Firebase Summit で発表されたすべての情報をご覧ください。Firebase を使用してアプリ開発を加速し、自信を持ってアプリを実行する方法を紹介しています。詳細

同期、非同期、および約束

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

関数が適切に解決されるようにするには、関数のライフサイクルを管理することが重要です。関数を正しく終了することで、実行時間が長すぎる関数や無限にループする関数からの過剰な料金を回避できます。また、関数が正常に終了条件または状態に達する前に、関数を実行している Cloud Functions インスタンスがシャットダウンされないようにすることもできます。

関数のライフサイクルを管理するには、次の推奨アプローチを使用します。

  • JavaScript promiseを返すことにより、非同期処理を実行する関数 (「バックグラウンド関数」とも呼ばれます) を解決します。
  • res.redirect()res.send() 、またはres.end() ) でHTTP 関数を終了します。
  • return;同期関数を終了します。声明。

JavaScript promise を使用して非同期コードを簡素化する

Promise は、非同期コードのコールバックの最新の代替手段です。 promise は、操作とそれが返す可能性のある将来の値を表します。また、同期コードの try/catch と同様のエラーを伝播することもできます。 The Firebase Blogで Firebase SDK のプロミスについて、 MDNで一般的なプロミスについて読むことができます。

promise が関数でどのように機能するか

JavaScript の promise を関数に返すと、promise が解決または拒否されるまで、その関数は実行され続けます。関数がその作業を正常に完了したことを示すには、promise を解決する必要があります。エラーを示すには、promise を拒否する必要があります。これは、必要なエラーのみを処理する必要があることを意味します。

次のコードは、Firebase Realtime Database refを受け取り、その値を"world!"に設定します。 . setの結果を返すことにより、データベースへの文字列の書き込みの非同期作業が完全に完了するまで、関数の実行が保証されます。

// 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!');
  });
});

コンテキスト内の例

Cloud Functions のコード サンプルのほとんどには、適切な関数終了の例が含まれています。以下に、典型的なケースをいくつか示します。