独书先生 Menu

Node.js学习笔记(3)–Nodejs核心库之timers/util/events简单示例总结

1.Node.js核心库之timers

方法 描述
setTimeout 间隔一定时间后执行方法,执行一次
clearTimeout 清除定时器
setInterval 间隔一定时间执行方法,执行执行
clearInterval 清除定时器
setImmediate 类似setTimeout,将代码加入下一个事件循环
clearImmediate 清除setImmediate。

 

JS:

//setTimeout 和 clearTimeout
var i=0;
function print() {
    console.log(i++);
    timeOut = setTimeout(print,1000);
    if(i>10){
        clearTimeout(timeOut);
    }
}

//第二个参数是间隔时间,单位是毫秒
console.time('l1');
var timeOut = setTimeout(print,1000);
console.timeEnd('l1');

Result:
l1: 0.542ms
0
1
2
3
4
5
6
7
8
9
10

PS:每隔1秒显示0~10

 

//setInterval 和 clearInterval
var i=0;
function print() {
    console.log(i++);
    if(i>5){
        clearInterval(interVal);
    }
}
var interVal = setInterval(print,1000);

Result:

0
1
2
3
4
5

 


2.Node.js核心库之util

方法 描述
format 格式化输出
log 打印字符串,包含时间戳
inspect 以字符形式打印对象
isRegExp 判断是否是正则
isDate 判断日期
isError 判断是否错误
inherits 继承
// util(实用工具)基础示例
//先引用进来
var util = require('util');

//1.格式化输出
console.log(util.format('%d','sss')); //NaN

//2.和console.log的区别,能打印出时间
util.log('log'); //28 Nov 15:35:39 - log

//3.以字符串形式输出对象
console.log(util.inspect({name:'name'})); //{ name: 'name' }

//4.判断是否是日期
console.log(util.isDate(new Date())); //true
console.log(util.isDate('2017/11/28')); //false

//5.判断是否是着正则
console.log(util.isRegExp(/oop/g)); //true
console.log(util.isRegExp(/\//g)); //true

//6.判断参数是否是Error
console.log(util.isError(new Error('error')));//true

 


2.Node.js核心库之events

方法 描述
addListener/on 注册事件监听器
once 单次事件监听器注册
removeListener 移除事件监听器
removeAllListener 移除所有的事件监听器
setMaxListeners 设置最大的事件监听者,默认值为0
listenerCount 返回指定事件的监听器数量
//events基础示例
var util = require('util'),Emitter = require('events').EventEmitter;
var TestClass = function () {
    console.log('对象初始化!');
};

//TestClass继承于Emitter
util.inherits(TestClass,Emitter);

//开始写注册事件
var testClass = new TestClass();

//设置事件监听器个数
testClass.setMaxListeners = 20;

//1.采用addListener注册事件监听器
testClass.addListener('event1',function () {
    console.log('1-addListener事件1被触发');
});

//2.采用on注册事件监听器
var fun2 = function () {
    console.log('2-on事件1被触发');
};
testClass.on('event1',fun2);

var fun3 = function () {
    console.log('3-on事件1被触发');
};
testClass.on('event1',fun3);
console.log('事件监听器数量 = %d',Emitter.listenerCount(testClass,'event1'));

//触发事件监听器,3种方法同时使用时都会被执行,按顺序执行
testClass.emit('event1');

//移除事件监听器
testClass.removeListener('event1',fun2);
testClass.emit('event1');

//移除所有的事件监听器
testClass.removeAllListeners('event1');
testClass.emit('event1');
console.log('清除后,事件监听器数量 = %d',Emitter.listenerCount(testClass,'event1'));

//once单次执行事件
testClass.once('once',function (a,b) {
    console.log('这是单次执行事件,参数a=' + a + '参数b=' + b);
});
console.log('once事件监听器数量 = %d',Emitter.listenerCount(testClass,'once'));
testClass.emit('once','a','b');
console.log('once事件监听器数量 = %d',Emitter.listenerCount(testClass,'once'));
testClass.emit('once','c','d');

Result:

对象初始化!
事件监听器数量 = 3
1-addListener事件1被触发
2-on事件1被触发
3-on事件1被触发
1-addListener事件1被触发
3-on事件1被触发
清除后,事件监听器数量 = 0
once事件监听器数量 = 1
这是单次执行事件,参数a=a参数b=b
once事件监听器数量 = 0