Event loop事件循环
线程 javascript是单线程语言,也就是说同一个时间只能做一件事情,而这个单线程的特性与它的用途相关,作为浏览器脚本语言,javascript的主要用途是与用户互动,以及操作DOM。这决定了它只能是单线程,否则会带来很复杂的同步问题,比如,假定javascript同时又两个线程,一个线程在某个结点上添加内容,另一个线程删除了这个结点,这个时候浏览器应该以哪个线程为准? 为了利用多核CPU的计算能力。HTML5提出了web Worker标准,允许javascript脚本创建多个线程,但是子线程完全受到主线程的控制,且不得操作DOM。所以,这个新标准并没有改变javascript单线程的本质。 【排队】 单线程就意味着所有任务需要排队,前一个任务接收,才能执行后一个任务,如果前一个任务耗时很长,后一个任务就不得不一直等着 像上面这样,如果排队是因为计算量大CPU忙不过来倒也算了,但是,如果是网络请求就不合适了,因为一个网络请求的资源什么时候返回时不可预知的,这种情况再排队等待就不明智了。 同步和异步 于是任务分为同步任务和异步任务 【同步】 如果在函数返回的时候,调用者就能够得到预期...