看阮老师的http://www.ruanyifeng.com/blog/2014/10/event-loop.html
我谈下我自己的理解
js执行时可以想象成一条车道,车道上汽车一辆接一辆,有条不紊的运行。(同步)这时,有一辆车坏掉了。假如它停在原地进行修理,那么后面的车就会被堵住没法行驶(代码堵塞),交通就乱套了。幸好旁边有应急车道,可以把故障车辆推到应急车道修理,而正常的车流不会受到任何影响(异步处理)。等车修好了,再从应急车道回到正常车道即可。唯一的影响就是,应急车道用多了,原来的车辆之间的顺序会有点乱。
或者是这么看js执行好比玩的垃圾网页游戏,主线任务被绑定死的不做完不准做支线(同步),但支线任务又会被接取,接取后只好放入任务面板等做完主线后再做(异步)
回调(这个忘了哪里听过但例子真的很好)
约会结束后你送你孩子回家,离别时,你肯定会说:“到家了给我发条信息(call me back),我很担心你。”
然后你女朋友回家以后还真给你发了条信息。
其实这就是一个回调的过程。
你留了个参数函数(要求女朋友给你发条信息)给你女朋友,然后你女朋友回家,回家的动作是主函数。
她必须先回到家以后,主函数执行完了,再执行传进去的函数,然后你就收到一条信息了。