js是单线程语言,即某个时间内只能干一件事。那为什么不能是多件事呢?
首先,多线程的含义是什么呢?同时做多件事节约时间,但是在js中,假如同时间添加和增加dom,那么就会冲突。
单线程意味着所有任务都需要排队,后边任务必须等待前边任务完成才能执行,假如前边有个任务需要耗时很长,那么后边有些看似可能不需要等待的任务就会一直
等待
(听到就很神烦是不是?)。从用户角度上来看是不可以接受的,所以JS出现了异步的概念。
同步和异步
- 同步任务:在主线程上排队执行的任务,只有前一个任务执行完毕,后一个任务才能执行。
- 异步任务:进入任务队列的任务,只有同步任务执行完毕,才会通知任务队列进入主线程执行。(终于等到我了!排了这么久的队!开心到哭······)
运行机制
- 所有同步任务都在主线程上执行,形成一个执行栈。
- 主线程之外,还存在任务