前端使用异步的场景
1.setTimeout setInterval函数
2、ajax请求、动态<img>的加载
3.事件绑定
(这里例子就省略啦)
(ES6新增了一个异步的情况那就是Promise,这里就不展开说了详情请看ES6入门之Promise)
单线程
什么是单线程,就拿上面的第一个例子来说吧
他的执行过程其实是这样的
再举一个复杂一点的例子
下面是运行结果
执行的过程是这样的:首先是第一个setTimeout函数,需要等待的操作,暂存起来。然后下一个也是暂存起来。接下来就是执行console.log(100),在接下来又是setTImeout函数(虽然设置等待时间是0,但认为还是需要等待的操作,所以也暂存起来。)等后面的console语句执行完之后,在过来看暂存的setTimeOut函数,如果到了等待时间就执行函数里面的语句。