プロミスを使用して dynamo から複数のレコードを取得するために、アプリケーションに AWS ラムダを使用しています。最初に context.callbackWaitsForEmptyEventLoop = true を設定したので、ハンドラーは約束が解決されるまで待機します。約束が解決されたら、 context.callbackWaitsForEmptyEventLoop = false を設定してから、 callback(null); を呼び出します。
プロミスが解決された後に callbackWaitsForEmptyEventLoop = false を設定しないと、callback(null) を呼び出した後でも関数がタイムアウトになります (一部のライブラリ関数はまだイベント キューにある可能性があります)。
したがって、問題は、同じランタイムが次回に再び使用される場合、イベント キューに以前に残っていた関数が最初からやり直すのではなく、再開されることです。これを回避する方法、または前のイベント キューを空にする方法はありますか?
context.callbackWaitsForEmptyEventLoop = true;
allPromises = getDatafromDynamo();
allPromises.then(results => {
console.log('Results are', JSON.stringify(results));
context.callbackWaitsForEmptyEventLoop = false;
callback(null, 'DONE');
return;
}).catch((err) => {
console.log("Error occurred", err);
context.callbackWaitsForEmptyEventLoop = false;
callback(err);
});