Js执行机制 (同步和异步)
同步
前一个任务结束后再执行后一个任务,程序的执行顺序与任务的排列顺序是一致的、同步的。
比如做饭的同步做法:烧水煮饭,等水开了(10分钟后),再去切菜,炒菜。
异步
在这个任务开始执行后,因为花费时间长,开始执行下一个任务。
比如做饭的异步做法:烧水煮饭,烧水的同时去切菜,炒菜。
js的异步是通过回调函数实现。
异步任务和同步任务
同步任务都在主线程上执行,形成一个执行栈。
异步任务有以下三种类型
1.普通事件,如click、resize等
2.资源加载,如load、error等
3.定时器,包括setInterval、setTimeout等
js具体执行顺序
1.先执行执行栈中的同步任务。
2.异步任务(回调函数)放入任务队列。
3.一旦执行栈中的所有同步任务执行完毕,系统就会按次序读取任务队列中的异步任务,于是被读取的异步任务结束等待状态,进入执行栈,开始执行。