同步和异步

同步概念

由于JavaScript是单线程的,在浏览器里代码按顺序执行,这就是同步。

异步概念

异步的来源:JavaScript是单线程的,一些比较耗时的代码(比如setTimeout、Ajax)会阻塞线程。为了提高代码执行的速度就有了异步。以下是异步执行顺序:

  • 先执行同步函数
  • 将回调放入消息队列
  • 事件轮询监听堆栈是否为空,堆栈为空就把回调函数在主线程最后追加执行。

es6加了任务队列概念(供promise使用),优先级高于消息队列。所以promise会优先setTimeout先执行。

-- 单线程就好比买东西只排一个队,浏览器给提供了一个窗口即主线程。
-- DOM、AJAX、setTimeout等等是webapi,运行环境提供的,不是js的api。
-- JavaScript设计的时候它自己没有这些,所以到es6它才具有自己的异步,消息队列是浏览器(运行环境)提供的。

JS中的异步操作

1、定时器(setTimeout setInterval)
2、AJAX中一般我们都采取异步操作(也可以同步)
3.promise等异步函数

你可能感兴趣的:(同步和异步)