Estoy usando nodejs con expressjs para mi api.
Quiero llamar a una función después de llamar a res.json ().
Por ejemplo, la API obtiene datos para el cliente pero quiero registrar esa acción, pero no es necesario que el cliente espere la respuesta de la solicitud hasta que la API guarde el registro
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
}
}
Es cierto que esto no se interrumpirá después del retorno; se llama ? ¿También hay un mejor patrón para hacer esto, como un oyente de cola de eventos para que arroje esa solicitud en un grupo y se ejecute siempre que sea posible?
3 respuestas
Enviar una respuesta json al cliente o usar la instrucción return
no impedirá que el script ejecute la función logthis
solo si coloca la instrucción return
antes.
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
}
}
Recuerde que la función async
funciona junto con la instrucción await
, si no tiene funciones asincrónicas dentro de getAll
no hay necesidad de usar la palabra clave async
Simplemente puede usar la devolución de llamada o la promesa en su lugar. function (data, callback) {DB.find (........) callback (err, data) // Haz otras cosas aquí.
}
Uso
res.json({success:true,data:data}).then(function(){
//Enter your code here. res.json() has finished.
});
Preguntas relacionadas
Nuevas preguntas
node.js
Node.js es un tiempo de ejecución de E / S asíncrono, sin bloqueo y basado en eventos que utiliza el motor JavaScript V8 de Google y la biblioteca libuv. Se utiliza para desarrollar aplicaciones que hacen un uso intensivo de la capacidad de ejecutar JavaScript tanto en el cliente como en el lado del servidor y, por lo tanto, se benefician de la reutilización del código y la falta de cambio de contexto.