极速小乌龟

导航

Node.js-提供了四种形式的定时器

 1 Node.js提供了四种形式的定时器
 2 global.setTimeout();      //一次性定时器
 3 global.setInterval();       //周期性定时器
 4 global.nextTick();          //本次事件循环结束时立即执行的定时器
 5 global.setImmediate();  //下次事件循环立即执行的定时器
 6 
 7 var i=1;
 8 setTimeout(()=>{
 9     console.log(i);
10 },1000);
11 
12 //1秒之后,打印出0,1,2,3,4
13 for(var i=1;i<=3;i++){
14     setTimeout(()=>{
15         console.log(i)
16     },1000)
17 }
18 
19 //闭包
20 
21 for(var i=1; i<=3; i++){
22     setTimeout(outer(i),1000)  //定期定时器
23 }
24 function outer(num){
25     return function(){
26         console.log(num)
27     };
28 }
29 
30 //使用箭头函数完成上面的闭包功能
31 
32 for(var i=1;i<=3;i++){
33     setTimeout(((num)=>{
34         return ()=>{console.log(num);}})(i),1000)
35 }
36 
37 setInterval 周期性定时器
38 var count=0;
39 var timer=setInterval(function(){
40     count++;
41     console.log('%d hello',count);
42     if(count>5){
43         clearInterval(timer);
44     }
45   },1000);
46 
47 //setTimeout  一次性定时器
48 var count2=0;
49 var timer2=setTimeout(function(){
50     count2++;
51     if(count2<=5){
52         console.log('%d hello',count2);
53         setTimeout(arguments.callee,1000);  //arguments
54     }else{
55         clearTimeout(timer2);
56     }
57 },1000)

 

 1 //setImmediate(); 下次事件循环立即执行的定时器
 2 setImmediate(function(){
 3     console.log('Immediate 1.....');
 4 });
 5 process.nextTick(function(){
 6     console.log('nextTick 1......');
 7 });
 8 setTimeout(function(){console.log('setTimeout 2....')},1000)
 9 process.nextTick(function(){
10     console.log('nextTick 2......');
11 });
12 setImmediate(function(){
13     console.log('nextTick 3......');
14 });
15 console.log('end....');

 

posted on 2016-12-20 09:25  极速小乌龟  阅读(539)  评论(0编辑  收藏  举报