2016-01-28 2 views
2

В «Профессиональном NodeJS» я нашел это предложение «Этот проект (NodeJS) не был похож на другие серверные платформы JavaScript, где все примитивы ввода-вывода управлялись событиями, и вокруг не было никакого способа». Но, как я знаю, NodeJS управляется событиями, а потоки в NodeJS управляются событиями. Так кто-нибудь может объяснить это предложение?Является ли nodeJs управляемым событиями?

+0

Я думаю, что это просто ошибка. Я бы не потерял сон над ним. – Shanoor

ответ

2

Node.js - это асинхронная среда, управляемая событиями. В следующем примере «hello world» многие соединения могут обрабатываться одновременно. При каждом соединении обратный вызов запускается, но если работы не будет, узел будет спать.

const http = require('http'); 

const hostname = '127.0.0.1'; 
const port = 1337; 

http.createServer((req, res) => { 
    res.writeHead(200, { 'Content-Type': 'text/plain' }); 
    res.end('Hello World\n'); 
}).listen(port, hostname,() => { 
    console.log(`Server running at http://${hostname}:${port}/`); 
}); 

Это отличается от сегодняшней более распространенной модели параллелизма, в которой используются потоки ОС. Потоковая сеть относительно неэффективна и очень сложна в использовании. Кроме того, пользователи узла свободны от забот о мертвой блокировке процесса - нет замков. Почти ни одна функция в узле напрямую не выполняет операции ввода-вывода, поэтому процесс никогда не блокируется.

Подробнее см. source.

Смежные вопросы