0
でコールバック()関数のラムダでmicroservice-HTTPエンドポイントスタータ機能は、機能を終了するには、次のコードが含まれて行わ:私いくつかのエンドポイントとラムダ専用APIを書き込んだ後AWSラムダは、ノード
const done = (err, res) => callback(null, {
statusCode: err ? '400' : '200',
body: err ? err.message : JSON.stringify(res),
headers: {
'Content-Type': 'application/json',
},
});
を私のすべての機能でこの同じコードで自分自身を見つけました。私の最初の本能は、これをモジュールに入れてコードをもっとDRYにすることでしたが、もし私がそれを行うなら、callback()
関数は範囲外になります。
私は自分の関数からJSONを返すだけなので、これは特定のユースケースで唯一可能なContent-Typeになります。
どのように人々はこれに対処していますか?このコードを何らかの形でカプセル化するための実用的な(そしてエレガントな)方法はありますか?それとももっと良い選択肢ですか?
:
は、ハンドラは、その後のようになります。範囲外になることはありません。 – idbehold
@idbeholdこれをグローバルに送信するとiffyと感じます。特に "コールバック"のような一般的なもの。 – Julian
しかし、Lambdaコンテナインスタンスは、一度に1つだけハンドラを実行します。ラムダ関数を呼び出して、同じラムダ関数を最初に終了する前に2回目に呼び出すと、2回目の呼び出しで新しいコンテナが実行されます。ハンドラ関数が終了した(またはタイムアウトした)コンテナを再び利用できるようにします。したがって、ラムダ関数の文脈では、グローバルは本当に重要ではありません。 'global.MY_SUPER_SECRET_CALLBACK = callback'が気に入ったら、グローバル名をもっと具体的なものに変更することができます。 – idbehold