2017-03-16 4 views
3

AWSラムダハンドラの外部で非同期関数を実行し、その出力をハンドラ関数で使用する方法はありますか?ハンドラ関数を実行する前に、さまざまなDB接続を非同期に初期化する必要があります。そうすれば、アクティブなDB接続はコンテナの再利用時に生き残ることができます。AWSラムダハンドラの前に非同期関数を実行する方法

例:

var i = 'immediate start'; 
setTimeout(function(){ 
    i = 'delayed start'; 
}, 5000); 
module.exports.handler = function (event, context, callback) { 
    console.log(i); 
    //outputs `immediate start` whereas I need to have i = `delayed start` here. 
} 

答えて

0

あなたが約束を作成し、setTimeout()の内部コールバック関数がトリガされるたびに約束を解決しなければなりません。ように:

module.exports.handler = function (event, context, callback) { 
    var i = 'immediate start'; 
    return new Promise((resolve, reject) => { 
     setTimeout(() => { 
      i = 'delayed start'; 
      resolve() 
     }) 
    }) 
    .then(()=>console.log(i)) 
} 
関連する問題