如何避免阻塞node.js中的主线程?

2024-05-28

当使用 Node.js 编写 Web 服务器应用程序时,永远不要阻塞主线程当然非常重要。但是,如果服务器请求需要进行需要一些时间才能完成的计算怎么办?

会做一个

setTimeout(myCalculationFunc(), 0);

是保持服务器响应其他请求的最佳方式吗?


如果您想使用它,我使用 child_process 创建了一个简单的示例来进行繁重的计算。

你可以这样做:

var http = require("http"),
exec = require("child_process").exec;

http.createServer(function(request, response) {
    var endvalue;
    request.on('data',
    function(data) {
        endvalue = data;
    });
    request.on('end',
    function() {
        exec("node calculate.js "+endvalue,
            function (error, stdout, stderr) {
              response.writeHead(200, {"Content-Type": "text/plain"});
              response.write(stdout);
              response.end();
            });
    });
}).listen(8080);

计算.js:

var endvalue = process.argv[2];
    for (i=0;i<=endvalue;i=i+1)
    {
        //just keeping it busy
    }
console.log("FINISHED USING ENDVALUE: "+endvalue);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何避免阻塞node.js中的主线程? 的相关文章

随机推荐