NodeJS / Express不是异步的

问题描述 投票:0回答:1

你能否提一下为什么一次快递处理一个请求?我认为应该可以一次做多个。

const express = require('express');
const app = express();
var count = 0;

app.get('/', (req, res) => {
    count++;
    if (count > 1) {
        console.log('concurrent!');
        debugger;
    }
    console.log(count);
    count--;
    res.send('Hello World!');
});

app.listen(1333, () => console.log('Example app listening on port 1333!'));

无论如何,我都不会使用调试器。试图用ab发送多个req:

ab -n 100 -c 100 -m GET localhost:1333/

他们总是在等着彼此......

node.js express asynchronous concurrency blocking
1个回答
1
投票

节点“单线程”,我的意思是Node的事件循环是单线程的,它与express无关。只有“IO”像数据库查询,文件读取等异步管理...

在这里你有没有IO的基本代码,所以每个请求都是逐个处理的,并且会在发布的订单上完成。如果你有asynchrone调用它不会是这种情况。

您可以查看此文章以获取更多详细信息:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/

© www.soinside.com 2019 - 2024. All rights reserved.