理解js异步的概念
js引擎在执行的时候是单线程的,这是大家都知道的。我们先来看一段代码:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JavaScript</title>
<script>
//第一段
for (var i = 10000; i >= 0; i--) {
console.log(i);
}
</script>
<script>
//第二段
var node = document.createElement('script');
node.src="js/async.js";
node.type="text/javascript";
document.head.appendChild(node);
</script>
//第三段
<script src="js/sync.js" type="text/javascript"></script>
</head>
<body>
</body>
</html>
//async.js代码:
console.log('async!');
//sync.js代码:
console.log('sync!'); setTimeout(function(){ console.log('setTimout run!'); },1000);
大家觉得执行顺序是什么?
输出:10000-0
sync!
async!
setTimout run!
从执行可以看出,主程序是一直在向下执行。setTimeout和create js都是异步操作,会被放到主线程的执行队列的最后,只有主线程空闲了,才会执行异步队列里的内容。
那么总结一下,哪些操作是异步操作呢?
1.ajax
2.setTimeout/setInternel
3.websocket
4.异步加载js
5.DOM事件、IO输入
能想到的有这些,有漏掉的再补上!

浙公网安备 33010602011771号