He visto muchas formas diferentes de manejar res.status(<code>).send(<whatever>) especialmente cuando se trata de funciones asíncronas, y no estoy seguro de cuál es la correcta. ¿Alguien puede proporcionar una explicación de la forma adecuada de hacerlo?
export const randomFunction = functions.runWith(functionDefault).https.onRequest(async (req, res) => { functionSecurity.setHttpSecurityHeaders(res); if (req.body.automaticFail) { res.status(500).send(`This function automatically bombed out`); return Promise.reject(); } res.status(200).send(`This function automatically succeeded`); return Promise.resolve(200); } export const randomFunction2 = functions.runWith(functionDefault).https.onRequest(async (req, res) => { functionSecurity.setHttpSecurityHeaders(res); if (req.body.automaticFail) { return res.status(500).send(`This function automatically bombed out`); } return res.status(200).send(`This function automatically succeeded`); } export const randomFunction3 = functions.runWith(functionDefault).https.onRequest(async (req, res) => { functionSecurity.setHttpSecurityHeaders(res); if (req.body.automaticFail) { res.status(500).send(`This function automatically bombed out`); } res.status(200).send(`This function automatically succeeded`); }¿Quizás incluso ninguno de estos es correcto? Estoy confundido sobre cómo se supone que funcionan las operaciones asincrónicas.
randomFunction2 funcionará perfectamente, la razón es que Node.js finalizará el ciclo de solicitud-respuesta después de llamar a la función send() para que no tenga que preocuparse si es asíncrono o no.