在上一篇的文章中介绍了js异步原理,有的小伙伴可能还有些云里雾里,在本篇文章中将以新手很容易用错的setTimeout为例来解释js的异步原理。
首先我们看一个例子
<script>
console.log(1);
setTimeout(function(){
console.log(2);
},500);
console.log(3);
// 运行结果
// 1
// 3
// 2
</script>
这里通过setTimeout延迟500毫秒执行,所以结果是1,3,2。这看起来明明就是异步操作啊,为什么说是同步呢?我们接着看下一个例子。
<script>
var date = new Date();
console.log('first time: ' + date.getTime());
setTimeout(function(){
var date1 = new Date();
console.log('second time: ' + date1.getTime() );
console.log( date1.getTime() - date.getTime() );
},1000);
for(var i=0; i < 10000 ; i++){
console.log(1);
}
// 运行结果
// first tim