node.js学习笔记之定时器的第三个参数

相对于定时器setTimeout 和 setInterval 的如何在指定时间之后执行被大家所熟悉来说,这两个系统函数的第三个参数可能有些同学还不是太清楚,我也是刚发现的,现学现卖一下。

创新互联专注为客户提供全方位的互联网综合服务,包含不限于成都网站建设、做网站、亚东网络推广、微信小程序、亚东网络营销、亚东企业策划、亚东品牌公关、搜索引擎seo、人物专访、企业宣传片、企业代运营等,从售前售中售后,我们都将竭诚为您服务,您的肯定,是我们最大的嘉奖;创新互联为所有大学生创业者提供亚东建站搭建服务,24小时服务热线:028-86922220,官方网址:www.cdcxhl.com

这两个函数的基本用法很简单,setTimeout是在指定时间之后执行一次函数体;setInterval是每过一段时间就执行一次,直到清除该定时器。应用如下:

//setTimeout

setTimeout(function(){
    console.log("this is console.log");
},100);

//setTimeout 在100毫秒之后输出"this is console.log",定时器执行完毕;



//setInterval

let m = 1;
let t = setInterval(function(){
    console.log(m);
    m++;
    if(m>10){
        clearInterval(t);
    }
},100);

//setInterval 每100毫秒输出一次m的值,当m大于10,清除定时器,也就不再输出了。

其实定时器还可以有第三个参数,甚至第四第N个参数,当然N是不能大于函数所能接受的参数最大值的。

从第三个参数开始,包括第三个参数都将会当做定时器的回调函数的参数依次传入回调函数。

//setTimeout

setTimeout(function(l,m,n){
	console.log(l,m,n);
},100 ,1,10,100);

//setTimeout 分别传入了第三四五个参数,在回调函数中也同时接收了三个参数,最终输出为
//1 10 100

//setInterval

let m = 1;
let s = setInterval(function(x,y,z){
	console.log(x,y,z);
	m++;
	if(m>10){
		clearInterval(s);
	}
},100,m,m*10,m*100)

//setInterval 也和setTimeout一样从第三个参数开始都会按顺序传入回调函数。
///须要注意的是如果外部参数是值类型,不论第三四五参数如何变化,
//回调函数所接收的参数只是第一次传入的值
//上面的console.log(x,y,z)输出将会是
//1 10 100
//1 10 100
//1 10 100
//1 10 100
//1 10 100
//1 10 100
//1 10 100

//但如果外部参数如果是引用类型,比如是一个obj,那么,每次执行时是可以得到不同的数据的,例如:
let m = {a:1};
let s = setInterval(function(x){
    console.log(x);
    m.a++;
    if(m.a>10){
        clearInterval(s);
    }
},100,m)

// 那么,上面console.log(x)的输出将会是:
//{ a: 1 }
//{ a: 2 }
//{ a: 3 }
//{ a: 4 }
//{ a: 5 }
//{ a: 6 }
//{ a: 7 }
//{ a: 8 }
//{ a: 9 }
//{ a: 10 }

分享文章:node.js学习笔记之定时器的第三个参数
转载源于:http://scyanting.com/article/jdgojc.html