According to wikipedia,
Node.js uses non-blocking API, means it never waits for another API for data. It simply calls another API and a notification mechanism is initiated for the previous API.
If you don’t understand the above concept, lets dig deeper with an example, Suppose many clients initiates a request to a server and server initiates a separate thread for every new request, what happens is that a lot of memory is wasted on executing these separate threads. On contrary, node.js server applications executes on a single thread with event looping mechanism. Thus node.js type server handles many light-weighted requests on a single thread.
Following are some features of node.js:
• Asynchronous and event driven: Node.js is asynchronous means it never waits for another request or API and simply moves on to another API.
• Fast: It is very fast as compared to traditional server engines like Apache HTTP server.
• Single threaded: Node.js applications runs on single thread model of execution as compared to traditional server applications in which a separate thread is initiated for every new request.
• Highly Scalable: Though node.js applications are single threaded, they are highly scalable and fast.
I/O type applications, data streaming applications, JSON based applications and single page applications are some application model in which node.js is used extensively whereas it is recommended not to use node,js for CPU-intensive applications.