Javascript 从快速路线停止执行功能

Javascript 从快速路线停止执行功能,javascript,node.js,Javascript,Node.js,当连接在快速路由中丢失时,我试图停止一个函数的执行,我有这样的例子 app.post('routeName',function (req,res,next)=>{ req.on('close',()=>{ //do something to stop function }); module.myFunction(req, (err,result)=>{ //do something with the result }) }) myFuncti

当连接在快速路由中丢失时,我试图停止一个函数的执行,我有这样的例子

app.post('routeName',function (req,res,next)=>{
   req.on('close',()=>{
      //do something to stop function
   });

 module.myFunction(req, (err,result)=>{
   //do something with the result
})
})

myFunction执行一些可能需要一段时间的mongo查询(主要用于服务器端筛选大型数据集),但有时如果设置了新筛选器,则会再次调用该函数,在这种情况下,我希望停止myFunction正在执行的工作。我可以在onClose侦听器中调用res.end(),或返回res.end()或类似的内容,但在myFunction中正在进行的任何工作仍在继续。我尝试在函数所在的位置添加req.on('close'),但一旦req对象被传递到myFunction中,该事件就不会触发。关于如何解决这个问题有什么想法吗?

提出结束活动:

 const ended = new Promise((_, rej) => req.on('close', rej));
然后将其传递给所有函数,无论何时执行异步操作,请替换:

 await sth();
与:


现在
尝试{}catch
最外部的调用,您就完成了:)

函数执行启动后,无法取消/终止它。如果您有长期运行的异步作业,唯一的选择是等待它结束。
 await Promise.race(ended, sth());