同步概念
由于JavaScript是单线程的,在浏览器里代码按顺序执行,这就是同步。
异步概念
异步的来源:JavaScript是单线程的,一些比较耗时的代码(比如setTimeout、Ajax)会阻塞线程。为了提高代码执行的速度就有了异步。以下是异步执行顺序:
- 先执行同步函数
- 将回调放入消息队列
- 事件轮询监听堆栈是否为空,堆栈为空就把回调函数在主线程最后追加执行。
es6加了任务队列概念(供promise使用),优先级高于消息队列。所以promise会优先setTimeout先执行。
-- 单线程就好比买东西只排一个队,浏览器给提供了一个窗口即主线程。
-- DOM、AJAX、setTimeout等等是webapi,运行环境提供的,不是js的api。
-- JavaScript设计的时候它自己没有这些,所以到es6它才具有自己的异步,消息队列是浏览器(运行环境)提供的。
JS中的异步操作
1、定时器(setTimeout setInterval)
2、AJAX中一般我们都采取异步操作(也可以同步)
3.promise等异步函数
网友评论