基本要点:
- 两者都用于计时
- 两者都是异步任务
- JavaScript中首先执行主线程任务,其次执行异步任务
- 两者中的语句会立即执行,函数会延时执行。参考 js表达式和语句区别
目前就只感受到这几点,用程序来展示一下
关于要点1和2:
setTimeout(function(){console.log("1")},1000);
setTimeout(function(){console.log("2")},1000);
1和2基本上会同时出现,因为两个setTimeout几乎同时被加入到任务队列并计时,计时互不打扰,所以都会在一秒后执行相关命令。要想隔一秒再执行的效果,可以这样写。
setTimeout(function(){console.log("1")},1000);
setTimeout(function(){console.log("2")},2000);
关于要点3:
setTimeout(function(){console.log("1")},0);
console.log("2");
上面程序会先输出2,再输出1。因为setTimeout是异步任务,会被先放到任务队列,等主程序运行完之后再运行。
关于要点4:
setTimeout(console.log("1"),1000);
setTimeout(function(){console.log("2")},2000);
上面程序会立即输出1,然后过两秒后输出2。
网友评论