nodeJS基础---进程Process

本文详细介绍了Node.js中的process对象,包括beforeExit、disconnect和exit等关键事件。此外,还讲解了process的输入输出流,如process.stdin和process.stdout的使用,以及在旧模式下如何处理stdin流的暂停问题。
# day2: 进程process
    process 对象是一个 global (全局变量),提供有关信息,控制当前 Node.js 进程。
    作为一个对象,它对于 Node.js 应用程序始终是可用的,故无需使用 require()。


## Process Events


beforeExit: 当Node.js的事件循环数组已经为空,并且没有额外的工作被添加进来,事件'beforeExit'会被触发。
disconnect: 如果Node.js进程是由IPC channel的方式创建的(see the Child Process and Cluster documentation),
            当IPC channel关闭时,会触发'disconnect'事件。
exit:
    -显式调用process.exit()方法,使得Node.js进程即将结束;
    -Node.js事件循环数组中不再有额外的工作,使得Node.js进程即将结束。


## process 标注输入输出流
    process.stdin  标准输入流   process.stdout 标准输出流


    ```JavaScript


    var num1, num2;
    process.stdout.write( "please input num1: " );
    process.stdin.on( 'data', function(chunk) {
        if( !num1 ){
        num1 = Number( chunk );
        progress.stdout.write( 'please input num2: ' );
        } else {


        num2 = Number( chunk );
        process.stdout.write( 'num1+num2 = '+ num1 + num2 );


        }
    } )


    ```


    注意: 在"旧模式下" stdin流 默认是暂停的.所以必须通过执行.stdin.resume()来恢复它.
          同时process.stdin.resume()会切换到旧模式
`node-cleanup` 和 `process` 的 `exit` 事件虽然都与 Node.js 程序退出时的行为有关,但它们的功能并不完全相同。 ### **1. process.exit事件** Node.js 内置的 `process` 对象提供了一个 `exit` 事件,它会在进程即将退出时触发。开发者可以监听该事件,在程序终止前执行一些清理工作(如保存数据、释放资源等)。需要注意的是: - 这个事件只允许非常有限的操作,因为此时事件循环已经停止。 - 如果需要确保所有异步操作完成后再退出,则仅靠 `process.exit` 可能不够。 示例代码: ```javascript process.on('exit', (code) => { console.log(`About to exit with code ${code}`); }); ``` --- ### **2. node-cleanup模块** `node-cleanup` 是一个第三方模块,旨在解决某些场景下 `process.exit` 的局限性。它的特点包括: - 支持注册多个回调函数,并保证这些回调会被依次调用。 - 即使在未捕获异常或其他极端条件下也能运行清理逻辑。 - 更加灵活地处理同步和异步任务。 安装并使用方法如下: ```bash npm install node-cleanup ``` 然后可以在代码中引入: ```javascript const cleanup = require('node-cleanup'); cleanup((worker, signal) => { // 执行清理工作... console.log("Cleanup callback called"); }); // 模拟正常退出流程 setTimeout(() => { process.exit(0); }, 500); ``` --- ### **两者的区别对比** | 功能特性 | `process.exit` | `node-cleanup` | |------------------|-----------------------------------|-------------------------------| | 是否内置支持 | 内置于 Node.js | 需额外安装 | | 异常情况下的响应 | 无法捕捉到部分崩溃 | 能够覆盖更多意外状况 | | 回调复杂度 | 相对简单 | 允许多次注册且更强大 | 总结来说,如果你的需求仅仅是简单的收尾动作并且信任默认机制足够稳定的话,那么直接采用原生 API 就好;反之则考虑借助像 'node-cleanup' 这样的工具来增强健壮性和功能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值