美文网首页web前端
process常用属性和方法

process常用属性和方法

作者: 姜治宇 | 来源:发表于2020-04-11 20:52 被阅读0次

    process是node内置的进程对象,使用时不需require,可以直接使用,常用的process的属性和方法有:

    memoryUsage()

    这个方法返回一个对象,描述了node进程的内存使用情况,属性值的单位为字节。

    console.log(process.memoryUsage())
    /*返回结果:
    * { rss: 20660224,
      heapTotal: 7159808,//堆内存的总大小
      heapUsed: 4264936,//正在使用的堆内存大小
      external: 8224 }
    * */
    

    nextTick(fn)

    这货在vue是比较常见了,node也有这个方法,这个方法传一个回调函数,回调函数会打进微任务队列,微任务会先于宏任务(定时器timeout)执行。

    setImmediate(()=>{
        console.log('宏任务-定时器immediate')
    })
    
    setTimeout(()=>{
        console.log('宏任务-定时器timeout')
    },100)
    process.nextTick(()=>{
        console.log('微任务-nextTick')
    })
    
    /*
    * 执行结果:
    * 微任务-nextTick
    宏任务-定时器immediate
    宏任务-定时器timeout
    * */
    

    on()

    监听方法。
    比较常用的是未知异常的监听,这样出错了也不会退出node进程。

    var http = require('http');
    
    var server = http.createServer(function(req,res){
        method(); //由于method()未定义,会将程序进程退出。
        res.end('ok')
    });
    server.listen(3003);
    //放大招,所有无法捕获的异常都能获取到
    process.on('uncaughtException', function (err) {
        console.log('Caught Exception:' + err);//直接捕获method()未定义函数,Node进程未被退出。
    });
    

    exit(code)

    退出进程方法。code可以不写,默认就是0。

    process.on('exit',(code)=>{
        console.log('进程退出,结束状态码为:',code)
    })
    process.exit(1)
    /*
    执行结果:
    进程退出,结束状态码为: 1
    */
    
    

    cwd()

    英文就是current working directory,现在工作的路径:

    console.log(process.cwd());//打印当前process执行的路径
    

    argv属性

    打印这个属性会返回一个数组,数组有两个元素,分别是:node命令的路径、待执行文件的路径。

    console.log(process.argv)
    /*
    * 执行结果:
    * ['/usr/local/node/v8.10.0/bin/node',
    * '/home/app/test.js']
    * */
    

    如果你在执行文件后面再加参数,则也可以获取到:

    >node test.js 3001 3002
    
    console.log(process.argv)
    /*
    * 执行结果:
    * ['/usr/local/node/v8.10.0/bin/node',
    * '/home/app/test.js',
    * '3001','3002']
    * */
    

    pid、ppid属性

    返回进程的id、父id。

    console.log(process.pid)// 当前进程id:58355
    console.log(process.ppid)// 当前进程的父id:56912
    

    kill()

    杀死进程id。

    process.on('SIGHUP', () => {
        console.log('收到 SIGHUP 信号');
    });
    process.on('exit',(code)=>{
        console.log('进程退出,结束状态码为:',code)
    })
    
    setTimeout(() => {
        console.log('退出中');
        process.exit(0);
    }, 100);
    
    process.kill(process.pid, 'SIGHUP');
    

    相关文章

      网友评论

        本文标题:process常用属性和方法

        本文链接:https://www.haomeiwen.com/subject/vqsemhtx.html