JavaScript最大的特点是单线程,即在同一时间只能处理一个任务。而为了解决这个问题,HTML5允许JS创建多个线程,这样就有了同步和异步。
同步任务都是在主线程上执行,形成执行栈。
异步任务是通过回调函数实现的,而且异步任务是将相关回调函数添加到任务队列中,与同步任务是分开的,各自独立存在的。
常见的异步任务类型:
普通包括----click、resize等。 资源加载---load、error等 。 定时器---setInterval、setTimeout等。
JS的执行机制:
首先执行栈中的同步任务,然后将异步任务放到任务队列中。一旦执行栈中的同步任务执行完毕,系统就会按照次序读取任务队列中的异步任务,
开始执行异步任务。这样一直重复执行,这种机制又被称为事件循环机制。