小编Sar*_*roj的帖子

节点如何处理并发请求?

我最近一直在阅读nodejs,试图了解它如何处理多个并发请求,我知道nodejs是一个基于单线程事件循环的架构,在给定的时间点只有一个语句将被执行,即在主线程和阻塞代码/ IO调用由工作线程处理(默认为4).

现在我的问题是当使用nodejs构建的Web服务器收到多个请求时会发生什么,我知道,有很多Stack溢出线程有类似的问题,但没有找到具体的答案.

所以我在这里举一个例子,假设我们在/ index这样的路由中有以下代码.

app.use('/index', function(req, res, next) {

    console.log("hello index routes was invoked");

    readImage("path", function(err, content) {
        status = "Success";
        if(err) {
            console.log("err :", err);
            status = "Error"
        }
        else {
            console.log("Image read");
        }
        return res.send({ status: status });
    });

    var a = 4, b = 5;
    console.log("sum =", a + b);
});
Run Code Online (Sandbox Code Playgroud)

我们假设readImage()需要大约1分钟来读取该Image.如果两个请求T1和T2来得很清楚,nodejs将如何处理这些请求?

是否需要第一个请求T1,在排队请求T2时处理它(如果我的理解错误,请纠正我),如果遇到像readImage那样的任何异步/阻塞内容,它会将其发送给工作线程(稍后某点)当异步填充完成时它通知主线程并且主线程开始执行回调),通过执​​行下一行代码继续前进.当完成T1然后选择T2请求?这是对的吗?或者它可以在其间处理T2代码(意味着在调用readImage时,它可以开始处理T2)?

如果有人能帮我找到这个问题的答案,我真的很感激

javascript node.js

22
推荐指数
3
解决办法
1993
查看次数

Node.js应用程序SyntaxError:意外的保留字'class'

我是Node.js的新手,刚开始使用Eclipse和Nodeclipse插件构建应用程序.当我使用Node core.js运行应用程序时它工作正常,但使用Eclipse它会显示以下错误:

/home/sarojs/projects/Core/security.js:3
  class Security {
  ^^^^^
SyntaxError: Unexpected reserved word
at exports.runInThisContext (vm.js:73:16)
at Module._compile (module.js:443:25)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at Object.<anonymous> (/home/sarojs/projects/node/liveprojects/ecurvInc/Core/core.js:12:16)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚这里有什么问题.我搜索了解决方案并发现了一些资源意外的保留字,但我不明白如何将它合并到Eclipse中.

我的package.json看起来像这样:

{
 "dependencies": {
 "bluebird": "^3.4.0",
 "body-parser": "~1.8.1",
 "cookie-parser": "~1.3.3",
 "cors": "^2.8.1",
 "debug": "~2.0.0",
 "express": "~4.9.0",
 "express-handlebars": "^3.0.0",
 "express-session": "^1.13.0",
 "mysql": "^2.11.1",
 "passport": "^0.3.2",
 "passport-local": "^1.0.0"
 }
}
Run Code Online (Sandbox Code Playgroud)
  • Node.js版本:4.4.6
  • IDE:带有Nodeclipse插件的Eclipse Mars 1

任何帮助将受到高度赞赏.

node.js node-modules

6
推荐指数
1
解决办法
6258
查看次数

标签 统计

node.js ×2

javascript ×1

node-modules ×1