公共函数-停止时间

function sleep(time) {
	var now = new Date();
	var end = new Date();
	while((end-now) < time) {
		end = new Date();
	}
}

1、setTimeout

setTimeout(function(foo, bar) {
	// 输出a b
	console.log(foo + " " + bar);
},3000,'a','b');

// 或者下面这样
var timeoutId = setTimeout(function(){
	console.log('In timeout function');
}, 1000);
// 不输出任何信息
clearTimeout(timeoutId);

2、setInterval

var intervalId = setInterval(function(a, b) {
	// 第一秒钟输出aaa bbb
	console.log(a,b);
},1000,'aaa','bbb');

// 或者下面这样
var intervalId = setInterval(function() {
	console.log("in interval function");
},1000);
// 不输出任何信息
clearInterval(intervalId);

3、ref、unref

开启ref() 关闭unref() 当定义有两个或两个以上的setTimeout的时候这两个方法就不起作用

var intervalId = setTimeout(function(){
	console.log("In interval 2function");
},0);
// 不输出信息
intervalId.unref();
sleep(2000);
// 输出信息
intervalId.ref();

4、setImmediate

setImmediate 可传参数但时间不能设置 只能时间一直为0的效果(相当于setTimeout的时间为0)

var immediateId = setImmediate(function(a,b) {
	console.log("In immediate function"+a+";"+b);
},"dd","bb");
clearImmediate(immediateId);

5、nextTick

process.nextTick 主线程完成之后对列的第一个执行 setTimout setInterval setImmediate 都在线程中 整个是一个线程

process.nextTick(function() {
	// 第二执行
	console.log("process.nextTick");
});
// 第一执行
console.log('next');

var immediateId = setImmediate(function(a,b) {
	// 第三执行
	console.log("In immediate function"+a+";"+b);
},"dd","bb");

6、停止运行

里面的程序全部走完才重新计算

setInterval(function(){
	sleep(5000);
},1000)