node.js – Nodejs什么时候退出?

前端之家收集整理的这篇文章主要介绍了node.js – Nodejs什么时候退出?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
运行所有代码后,一行简单的节点程序会立即退出
console.log('hello');

但是,在执行所有代码后,侦听端口的http服务器程序不会退出

var http = require('http');
http.createServer(function (req,res) {
    res.writeHead(200,{'Content-Type': 'text/plain'});
    res.end('Hello World\n');
}).listen(1337,'127.0.0.1');

所以我的问题是,是什么造就了这个差异?是什么让第一个程序在执行所有代码退出,而第二个程序继续存在?

我在Java中理解,规范说当最后一个非守护进程线程退出时,JVM退出.那么,nodejs世界的机制是什么?

解决方法

[…] what made this difference? What made the first program quit after executing all code,while the second program continue to live?

第二个程序.listen()编辑.

节点的机制是event loop,节点进程通常在以下情况下退出

>事件循环的队列为空.
>没有能够添加到队列的后台/异步任务.

.listen()建立一个无限期能够添加到队列的持久性任务.也就是说,直到它是.close()d或该过程终止.

延长第一个应用程序的一个简单例子是add a timer

setTimeout(function () {
    console.log('hello');
},10000);

对于该应用程序的大部分运行时,事件队列将为空.但是,计时器将在后台/异步运行,在将回调添加到队列之前等待10秒,以便可以记录“hello”.之后,在完成计时器的情况下,满足两个条件并退出该过程.

猜你在找的Node.js相关文章