博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Node.js Undocumented(1)
阅读量:6813 次
发布时间:2019-06-26

本文共 1548 字,大约阅读时间需要 5 分钟。

  node.js的API文档做的不是很好,有些部分干脆没文档,最终还是要看代码才能解决。我这里将记录下看源码过程中看到的一些API并补充一些测试例子。在玩 的朋友可以瞧瞧。
   
process.reallyExit(status)
    用于进程主动退出,status设置退出的状态码。请注意,reallyExit退出的进程不会调用'exit'事件,下面的代码不会有任何输出:
var
 interval
=
setInterval(
function
(){
    process.reallyExit(
1
);
},
1000
);
process.on('exit',
function
(){
    console.log(
"
hello
"
);
});
  
process._kill(pid,sig)
   用于给指定pid的进程发送指定信号(类似kill命令),这是个“private”方法,你需要慎重使用,下面的代码会杀死自身的进程:
var
 pid
=
process.pid
process._kill(pid,
9
);
  
process.binding(name)
   非常有用的方法,很奇怪API文档里竟然没提到,这个方法用于返回指定名称的内置模块。例如下面的代码将打印node_net模块所有的可以调用的方法或变量(很多是文档没有提到的并且没有exports的,后续我会介绍下):
var
binding
=
process.binding('net');
console.dir(binding);
   process.dlopen(filename,target)
   看源码注释说是用来动态加载node.module的动态链接库的,以后尝试写扩展的时候也许可以尝试一下。
  
定时器
   Node.js的定时器模块的实现是有讲究的,对于超时时间after<=0的callback,会在内部new一个Timer并start(本质是使用libev的timer机制);但是对于after>0的callback,却不是这样。因为在实际应用中,大多数定时器事件的超时时间都是一样的,如果每个事件都new一个Timer并start,代价太高。因此node.js采用了一个类似哈希表的方案,将相同after超时时间的定时器事件组织成链表,以after为key,以链表为value整体构成一张表。每个链表只new一个Timer,这个Timer负责整个链表的定时器事件,当某个事件超时调用后,利用ev_timer_again来高效地重新设置超时时间。
   如果你确实希望对于after>0的定时器也每次new一个Timer来处理,那也可以做到,这就要用到前面提到的process.binding方法来获取timer模块,一个例子:
var
 Timer 
=
 process.binding('timer').Timer;
var
 timer
=
new
 Timer();
timer.callback
=
function
(){
    console.log(
"
callback called
"
);
};
timer.start(
1000
,
0
);

  

    timer.callback
    设定timer的回调函数,当超时的时候调用。
    timer.start(after,repeat)
    启动定时器,在after毫秒之后调用超时回调;如果repeat==0,则自动停止定时器;如果repeat>0,则在repeat毫秒之后再次调用callback,以repeat毫秒为间隔不断重复下去。
    ps.这篇blog刚好是我的第499篇blog,不出意外,第500篇还是继续介绍node.js。

文章转自庄周梦蝶  ,原文发布时间2011-05-31

转载地址:http://ytkzl.baihongyu.com/

你可能感兴趣的文章
噪音引来抗议 法庭命令关闭巴黎一个数据中心
查看>>
困难重重,错误铺就的混合云之路
查看>>
第二季度全球服务器市场出货量增长2%
查看>>
诺基亚出价166亿美元收购阿尔卡特朗讯
查看>>
人工智能就像电力,NVIDIA开始为智能安防行业“供电”
查看>>
SDN趋势回顾:2016年是软件定义WAN元年
查看>>
如何在CentOS和RHEL系统上安装或自动更新安全补丁
查看>>
路由器成帮凶!第二季度DDoS攻击翻倍
查看>>
Uber数据基础架构现在及未来
查看>>
SDN/NFV:融合与博弈持续共存
查看>>
常见的JavaScript易错知识点整理
查看>>
RagingWire战略重点批发数据中心服务
查看>>
数据中心的规模是否影响虚拟化DCIM的决策?
查看>>
后流量时代,世间再无电信运营商
查看>>
李开复:钉钉是大胆的突破式创新
查看>>
我国特色国情下 智慧城市建设与国外有哪些区别
查看>>
MaxCompute帮助创业公司中减轻MySQL存储压力
查看>>
ASHRAE新标准促进降低数据中心能源消耗
查看>>
程序猿如何从产品的角度去提升应用的体验之Android权限优化篇
查看>>
夏普欲收回美洲品牌授权 海信总裁:严格按照合同办
查看>>