APIにexpressjsでnodejsを使用しています。
res.json()が呼び出された後に関数を呼び出したい。
たとえば、APIはクライアントにデータをフェッチしますが、そのアクションをログに記録したいのですが、APIがログを保存するまでクライアントに要求応答を待機させる必要はありません
module.exports = {
getAll:async function(req,res){
////fetch data from db
res.json({success:true,data:data});
module.exports.logthis();
return;
},
logthis: async function ()
{
//save log
}
}
logthisが戻った後に中断されないというのは本当ですか。と呼ばれますか?また、これを行うためのより良いパターンがあります。たとえば、イベントキューリスナーのように、そのリクエストをプールにスローし、可能な場合はいつでも実行しますか?
クライアントにjson応答を送信するか、return
ステートメントを使用しても、スクリプトの前logthis
にreturn
ステートメントを配置した場合にのみ、スクリプトの関数の実行が停止することはありません。
module.exports = {
getAll:async function(req,res){
//fetch data from db
res.json({success:true,data:data});
this.logthis(data);
return;
},
logthis: function (data) {
// log data to file here
}
}
async
関数はawait
ステートメントと連動して機能することを忘れないでください。内部getAll
に非同期関数がない場合は、async
キーワードを使用する必要はありません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加