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