同步与异步因为 JavaScript 在同一时间只能处理一个任务,所有任务都需要排队,前一个任务执行完,才能执行下一个任务。如果前一个任务的执行时间很长,如执行AJAX操作或定时器操作时,后一个任务需要等它执行完毕才能向下执行,此时下面的任务就会被阻塞。
拿定时器来说,当用户向后台获取大量的数据时,就需要等到所有数据都获取完毕才能进行操作,用户只能在那里干等着,这种阻塞对用户来说意味着“卡死”,严重影响用户体验。在设计的时候,布莱登·艾奇就考虑到这个问题,将任务分为同步任务(synchronous)和异步任务(asynchronous)。