我在节点js中有一段代码需要花几秒钟才能完成,所以我开始使用threads_a_gogo模块(https://github.com/xk/node-threads-a-gogo)来不阻止http请求。我花了很多时间试图弄清为什么威胁生成没有起作用,因为我的请求仍然被阻止。
app.post('/ results.html',function(req,res){ if(config.debug) console.log(“ thread created”); var t = threads.create(); var r = new rounds() ; t.eval(r.start(req,res),function(err,result){ r.finish(res); //t.destroy(); if(config.debug) console.log(“线程被破坏” ); }); console.log(“请求完成”); });
console.log(“请求完成”); 仅在新线程完成之后才显示,但它假定几乎在请求完成时向服务器显示该请求,并将其阻止请求显示给服务器,直到该过程完成为止。
关于我在做什么错的任何想法吗?
谢谢
您实际上是r.start(req,res)
在主线程中执行,然后将返回值传递给t.eval
。eval
接受一个字符串,然后在线程全局范围内执行该字符串。这样的事情应该起作用:
t.eval('var start =' + r.start.toString()).eval('start()'), function(err, result) { });
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句