AWS lamda とか Google Functions で非同期処理をする場合のイディオム

公開日:2018-12-20
最終更新:2018-12-20

await しなかった promise は、実行前にトリガ関数から return するとそのまま実行されない場合がある (っぽい感じがする)
ので、関数終了前に全部 await すべきなんだけど、その場で await しなくてもいい処理は割とあるので、そういうのは配列に貯めておいて最後にまとめて await すればいいと思う。

Firebase Functions の場合

exports.trigger = functions.https.onRequest(async (req,res)=>{  
    const tasks = [];  
    tasks.push(writeAccessLogToDb());  

    req.body.events.forEach((event)=>{  
      tasks.push(processEvent(event);  
    });  
    await Promise.all(tasks);  
});  

async/await 無しで以下のようにしても意味は同じだけど、

exports.trigger = functions.https.onRequest((req,res)=>{  
    const tasks = [];  
    /// 中略  
    return Promise.all(tasks);  
});  

コード読む立場からすると await って書いてあるほうが安心感ありそう

記事が少しでもいいなと思ったらクラップを送ってみよう!
0
+1
@kuboonの技術ブログ

よく一緒に読まれている記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる

技術ブログをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

技術ブログを開設する

Qrunchでアウトプットをはじめよう

Qrunch(クランチ)は、ITエンジニアリングに携わる全ての人のための技術ブログプラットフォームです。

Markdownで書ける

ログ機能でアウトプットを加速

デザインのカスタマイズが可能

技術ブログ開設

ここから先はアカウント(ブログ)開設が必要です

英数字4文字以上
.qrunch.io
英数字6文字以上
ログインする