我有一个端点,我想对用户不感兴趣的地方进行async
后处理,因此我想异步处理它们并向用户发送响应。
类似这样的东西。
const createOrder = async (req,res)=>{
const order = await doCreateOrder(); //creates the order
somePostProcessing().catch(()=>{
//handle errors
});//asycn function which does some db/network operations(not interested in results)
return reply.send(order)
}
但是我担心会引起诸如内存泄漏(我的团队负责人说)之类的问题吗? 还有在nodeJS中进行此类后处理的最佳方法或其他选择是什么?
答案 0 :(得分:1)
忽略承诺的结果不是问题。无论您是否聆听承诺的成功完成,这都是完全可选的。有时有一些原因可以忽略。例如,我通常不让函数在函数结尾等待文件关闭。
忽略被拒绝的承诺是一个问题,因为这类似于同步代码中未处理的异常。
因此,只要您处理somePostProcessing().catch(...)
时出现的所有可能的错误,那么不必理会补全。
注意:您确实需要确保您的代码预期await doCreateOrder()
中出现错误时会发生什么,因为这将立即拒绝createOrder()
返回的承诺,因此createOrder()
的调用者需要为被拒绝的承诺提供处理程序,或者您需要在此函数内使用try/catch
来捕获和处理该可能的错误。