我在我的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返回后不会被中断;叫做 ? 还有一个更好的模式来做这个,比如一个事件队列监听器,这样我就把这个请求放在一个池中,并且只要有可能就执行它?
答案 0 :(得分:1)
只有在您发出return
语句之前,向客户端发送json响应或使用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
关键字
答案 1 :(得分:0)
您可以简单地使用回调或承诺。 function(data,callback){ DB.find(........) 回调(ERR,数据) //在这里做其他事情。
}
答案 2 :(得分:0)
使用
res.json({success:true,data:data}).then(function(){
//Enter your code here. res.json() has finished.
});