NodeJS / Express не асинхронный - PullRequest
       37

NodeJS / Express не асинхронный

0 голосов
/ 14 сентября 2018

Можете ли вы дать подсказку, почему экспресс-обработка обрабатывает один запрос за раз?Я думал, что он должен быть в состоянии сделать несколько операций одновременно.

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/

Они всегда ждут друг друга ...

1 Ответ

0 голосов
/ 14 сентября 2018

Узел "одиночный поток", я имею в виду цикл событий Узла однопоточный, это никак не связано с экспрессом.Только "IO" управляется асинхронно, как запросы БД, чтение файла и т. Д. *

Здесь у вас есть базовый код без ввода-вывода, поэтому каждый запрос обрабатывается один за другим и завершается в том порядке, в котором он был запущен.Если у вас был асинхронный вызов, это было бы не так.

Вы можете проверить эту статью для более подробной информации: https://nodejs.org/en/docs/guides/event-loop-timers-and-nexttick/

...