Node.js 返回后执行函数
我将nodejs与expressjs一起用于我的api 我想在调用res.json()之后调用一个函数 例如,api向客户机获取数据,但我想记录该操作,但不需要让客户机等待请求响应,直到api保存日志Node.js 返回后执行函数,node.js,express,Node.js,Express,我将nodejs与expressjs一起用于我的api 我想在调用res.json()之后调用一个函数 例如,api向客户机获取数据,但我想记录该操作,但不需要让客户机等待请求响应,直到api保存日志 module.exports = { getAll:async function(req,res){ ////fetch data from db res.json({success:true,data:data}); module.exports.logthis();
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
}
}
返回后日志不会被中断,这是真的吗;叫什么名字?
还有一种更好的模式可以做到这一点,比如事件队列侦听器,以便我将该请求抛出到池中,并在可能的情况下执行该请求?您只需使用回调或承诺即可。 函数(数据、回调){ DB.find(……) 回调(错误,数据) //在这里做其他事情 }使用
res.json({success:true,data:data}).then(function(){
//Enter your code here. res.json() has finished.
});
仅当将
return
语句放在脚本前面时,向客户端发送json响应或使用return
语句不会阻止脚本执行logthis
函数
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
函数与wait
语句一起工作,如果getAll
中没有异步函数,则无需使用async
关键字您在找什么?@raina77ow不,我不想等待logthis,我希望函数在调用res.json后立即返回,cuz客户端不必等待日志被保存。我想在调用res.json()之后调用函数。
-在这种情况下,“after”是什么意思?是否要在返回json()
后调用logthis
?使用等待
。是否要在之后立即调用logthis
?在调用json()
之前执行此操作。还要别的吗?澄清。@raina77ow我不希望客户端一直等待请求响应,直到logthis完成,所以我不能使用wait