node.js + express + threads_a_gogo阻塞请求

时间:2013-12-05 12:37:27

标签: multithreading node.js express

我在节点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("thread destroyed");
    });
    console.log("request finished");



});

console.log(“请求已完成”);仅在新线程完成后显示,但是假设几乎在请求完成时显示,并且在程序完成之前向服务器发出阻止请求。

关于我做错什么的任何想法?

THX

1 个答案:

答案 0 :(得分:2)

您实际上是在主线程中执行r.start(req,res),然后将返回值传递给t.evaleval接受一个字符串,然后在线程全局范围内执行。这样的事情应该有效:

t.eval('var start =' + r.start.toString()).eval('start()'), function(err, result) { });