NodeJS/Express 不是异步的

NodeJS/Express not asynchronous

你能提示一下为什么 express 一次处理一个请求吗?我觉得它应该可以一次做多个。

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:

发送多个请求
ab -n 100 -c 100 -m GET localhost:1333/

他们总是在等着对方...

Node "single thread",我的意思是Node的事件循环是单线程的,跟express没有关系。只有 "IO" 是异步管理的,如数据库查询、文件读取等...

这里有没有 IO 的基本代码,因此每个请求都被一个接一个地处理,并且将按照启动的顺序完成。如果你有异步调用就不会这样了。

您可以查看这篇文章了解更多详情:https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/